Excel 利用数组模拟IF()

前面讲了利用数组模拟AND和OR,同样利用数组也可以模拟IF()。还是以图7-5所示的工作表数据为例。

前一节讲过在单元格A8中输入公式“=SUM(AND(C3:C7>2000,C3:C7<2500)*1)”,按组合键“Ctrl+Shift+Enter”后,返回的结果是0。在单元格B8中输入公式“=SUM((C3:C7>2000)*(C3:C7<2500)*1)”,按组合键“Ctrl+Shift+Enter”后,结果是2。

现在我们将单元格A8中的公式更改为“=SUM(IF(C3:C7>2000,C3:C7<2500)*1)”,按组合键“Ctrl+Shift+Enter”后,得到的结果是2。如果将IF去掉,公式又会变成什么样子呢?在其他空白单元格中输入“=SUM((C3:C7>2000)*(C3:C7<2500))”,按组合键“Ctrl+Shift+Enter”后,结果还是2。

由此可以看出通常情况下“*”可以模拟IF(),需要注意的是并不是所有的IF()都可以用“*”代替,用户可根据实际情况灵活运用。

Excel 利用数组模拟AND和OR

AND(与关系):当两个或多个条件必须同时成立时才判定为真时,则称判定与条件的关系为逻辑与关系,就是平常所说的“且”。

OR(或关系):当两个或多个条件只要有一个成立时就判定为真时,则称判定与条件的关系为逻辑或关系。

图7-3 目标数据

在Excel中,*和+可以与逻辑判断函数AND和OR互换,但在数组公式中,*和+号能够替换AND和OR函数,反之则行不通。这是因为AND函数和OR函数返回的是一个单值TRUE或FALSE,如果数据公式要执行多重计算,单值不能形成数组公式各参数间的一一对应关系。例如要统计如图7-3所示的表格中基本工资为2000~2500的员工人数,就是说统计工资高于2000且低于2500的人数,由此可以判定该条件是一个“逻辑与”关系。

·如果在单元格A8中输入公式“=SUM(AND(C3:C7>2000,C3:C7<2500)*1)”,按组合键“Ctrl+Shift+Enter”后,返回的结果是0。

因为公式中“C3:C7>2000”返回的值是{FALSE;TRUE;TRUE;FALSE;FALSE}。而公式“C3:C7<2500”返回的值是{TRUE;TRUE;TRUE;TRUE;TRUE}。

这两个公式返回的值再逻辑与,则返回的值是FALSE。所以计算结果“=SUM(FALSE*1)=SUM(0*1)=0”。因此返回的结果为0。

·在单元格B8中输入公式“=SUM((C3:C7>2000)*(C3:C7<2500))”,按组合键“Ctrl+Shift+Enter”后,返回的结果是2。

这是因为在公式中“(C3:C7>2000)*(C3:C7<2500)”

={TRUE;FALSE;TRUE;TRUE;TRUE}*{TRUE;TRUE;FALSE;TRUE;FALSE}

={1;0;1;1;1}*{1;1;0;1;0}

={1;0;0;1;0}

所以公式的计算结果为“=SUM({1;0;0;1;0})”=2。

如图7-4所示。

图7-4 返回结果

Excel 利用数组模拟IF()

前面讲了利用数组模拟AND和OR,同样利用数组也可以模拟IF()。还是以图10-30所示的工作表数据为例。

前一节讲过,在A8单元格中输入公式“=SUM(AND(C3:C7>2000,C3:C7<2500)*1)”,按“Ctrl+Shift+Enter”组合键返回后,得到的结果是0。在B8单元格中输入公式“=SUM((C3:C7>2000)*(C3:C7<2500)*1)”,按“Ctrl+Shift+Enter”组合键返回后,得到的结果是2。

现在把单元格A8中的公式更改为“=SUM(IF(C3:C7>2000,C3:C7<2500)*1)”,按“Ctrl+Shift+Enter”组合键返回后,得到的结果是2,如图10-33所示。

如果把IF去掉,公式又会变成什么样子呢?

在B8单元格中输入公式“=SUM((C3:C7>2000)*(C3:C7<2500))”,按“Ctrl+Shift+Enter”组合键返回后,得到的结果还是2,如图10-34所示。

图10-33 返回结果

图10-34 返回相同结果

由此可以看出,通常情况下“*”可以模拟IF()。需要注意的是,并不是所有的IF()都可以用“*”代替,用户可根据实际情况灵活运用。

Excel 利用数组模拟AND和OR

1)AND(与关系):当两个或多个条件必须同时成立时才判定为真是,则称判定与条件的关系为逻辑与关系,就是平常所说的“且”。

2)OR(或关系):当两个或多个条件只要有一个成立时就判定为真时,则称判定与条件的关系为逻辑或关系。

在Excel中,*和+可以与逻辑判断函数AND和OR互换,但在数组公式中,*和+号能够替换AND和OR函数,反之则行不通。这是因为AND函数和OR函数返回的是一个单值TRUE或FALSE,如果数据公式要执行多重计算,单值不能形成数组公式各参数间的一一对应关系。

打开“工资表.xlsx”工作簿,例如要统计如图10-30所示的表格中基本工资为2000~2500的员工人数,就是说统计工资高于2000且工资低于2500的人数,由此可以判定该条件是一个“逻辑与”关系。

STEP01:如果在单元格A8中输入公式“=SUM(AND(C3:C7>2000,C3:C7<2500)*1)”,按“Ctrl+Shift+Enter”组合键后,返回的结果是0,如图10-31所示。

图10-30 目标数据

图10-31 返回结果

因为公式中“C3:C7>2000”返回的值是{TRUE;FALSE;TRUE;TRUE;TRUE}。而公式“C3:C7<2500)”返回的值是{TRUE;TRUE;FALSE;TRUE;FALSE}。

这两个公式返回的值再逻辑与,则返回的值是FALSE。所以计算结果“=SUM(FALSE*1)=SUM(0*1)=0”。因此返回的结果为0。

STEP02:在单元格B8中输入公式“=SUM((C3:C7>2000)*(C3:C7<2500))”,按“Ctrl+Shift+Enter”组合键后,返回的结果是2,如图10-32所示。

图10-32 返回结果

这是因为在公式中“(C3:C7>2000)*(C3:C7<2500)”

={TRUE;FALSE;TRUE;TRUE;TRUE}*{TRUE;TRUE;FALSE;TRUE;FALSE}

={1;0;1;1;1}*{1;1;0;1;0}

={1;0;0;1;0}

所以公式的计算结果为“=SUM({1;0;0;1;0})”=2。