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 数组与数组公式

在工作表中经常可以看到许多在头尾带有“{}”的公式,有的用户将这些公式直接复制、粘贴到单元格中,却没有出现正确的结果,这是为什么呢?其实这些都是数组公式,数组公式的输入方法是将公式输入后,不能直接按回车键,而是要同时按组合键“Ctrl+Shift+Enter”,这时计算机自动为公式添加“{}”。

用户如果不小心按了回车键,也不用紧张,用鼠标单击编辑栏中的公式,再按组合键“Ctrl+Shift+Enter”即可。

数组公式是相对于普通公式而言的,普通公式只占用一个单元格且返回一个结果。而数组公式则可以占用一个单元格也可以占用多个单元格,它对一组数或多组数进行计算,并返回一个或多个结果。

数组公式使用一对大括号“{}”以区别于普通公式且以组合键“Ctrl+Shift+Enter”结束。

深刻理解 Excel 数组概念

数组是具有某种联系的多个元素的组合。例如一个公司有100名员工,如果公司是一个数组,则100名员工就是这个数组里的100个元素。元素可多可少,可加可减,所以数组里面的元素是可以改变的。也可以这么理解,多个单元格数值的组合就是数组。

数组类型:

  • 数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
  • 数组名的书写规则应符合标识符的书写规定。
  • 数组名不能与其他变量名相同。
  • 方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0]、a[1]、a[2]、a[3]、a[4]。
  • 不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。
  • 允许在同一个类型说明中,说明多个数组和多个变量。

Excel MATCH函数数组元素查找

MATCH函数用于返回在指定方式下与指定数值匹配的数组中元素的相应位置。如果需要找出匹配元素的位置而不是匹配元素本身,则应该使用MATCH函数而不是LOOKUP函数。其语法如下:


MATCH(lookup_value,lookup_array,match_type)

其中,lookup_value参数为需要在数据表中查找的数值。例如,如果要在电话簿中查找某人的电话号码,则应该将姓名作为查找值,但实际上需要的是电话号码。lookup_array参数为可能包含所要查找的数值的连续单元格区域,应为数组或数组引用。match_type参数为数字-1、0或1,指明如何在lookup_array中查找lookup_value。

下面通过实例详细讲解该函数的使用方法与技巧。

打开“MATCH函数.xlsx”工作簿,切换至“Sheet1”工作表,本例中的原始数据如图16-9所示。要求根据工作表中的数据内容,查找在指定方式下与指定数值匹配的数组中元素的相应位置。具体的操作步骤如下。

STEP01:选中A7单元格,在编辑栏中输入公式“=MATCH(1.3,B2:B5,1)”,然后按“Enter”键返回计算结果。由于此处无正确的匹配,所以返回B2:B5数据区域中最接近的下一个值(1.2)的位置,结果如图16-10所示。

图16-9 原始数据

图16-10 A7单元格返回结果

STEP02:选中A8单元格,在编辑栏中输入公式“=MATCH(1.7,B2:B5,0)”,用于返回B2:B5数据区域中1.7的位置,输入完成后按“Enter”键返回计算结果,如图16-11所示。

STEP03:选中A9单元格,在编辑栏中输入公式“=MATCH(1.7,B2:B5,-1)”,然后按“Enter”键返回计算结果,由于B2:B5数据区域不是按降序排列,所以返回错误值“#N/A”,如图16-12所示。

图16-11 A8单元格返回结果

图16-12 A9单元格返回结果

Excel 引用数组中的大小制约

引用大小制约指的是数组公式中各相关引用之间的大小制约或引用大小对结果集大小的制约。

主关键区域决定数组函数返回值的大小(这里说的关键区域指的是决定数组公式返回结果集大小的区域)。

有相互依赖关系的引用之间大小一定要一致。相互依赖指的就是共同决定某个结果,如果不一致,则会返回一个错误值。

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。

Excel 返回数组集合

在使用数组公式时,有可能返回的是一个结果,也有可能返回的是一个集合。

STEP01:打开“人员统计.xlsx”工作簿,选中A1:D4单元格区域,输入公式“={“编号”,”姓名”,”性别”,”年龄”;”001″,”张三”,”男”,”22″;”002″,”张五”,”男”,”24″;”004″,”丁一”,”女”,”23″}”,如果按“Ctrl+Enter”组合键返回,会显示如图10-27所示的结果。

STEP02:如果按“Ctrl+Shift+Enter”组合键则会返回一组集合,结果如图10-28所示。

图10-27 返回结果

返回一组集合

图10-28 返回一组集合

认识 Excel 数组

  • 数组类型:数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
  • 数组名的书写规则应符合标识符的书写规定。
  • 数组名不能与其他变量名相同。
  • 方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0],a[1],a[2],a[3],a[4]。
  • 不能在方括号中用变量来表示元素的个数,但是可以用符号常数或常量表达式。
  • 允许在同一个类型说明中说明多个数组和多个变量。

在工作表中经常可以看到许多在头尾带有“{}”的公式,有的用户把这些公式直接复制粘贴到单元格中,却没有出现正确的结果,这是为什么呢?其实这些都是数组公式,数组公式的输入方法是将公式输入后,不直接按“Enter”键,而是按“Ctrl+Shift+Enter”组合键,这时电脑自动为公式添加“{}”。

用户如果不小心按了“Enter”键,也不用紧张,用鼠标点一下编辑栏中的公式,再按“Ctrl+Shift+Enter”组合键即可。

数组公式是相对于普通公式而言的,普通公式只占用一个单元格,且返回一个结果,而数组公式则可以占用一个单元格也可以占用多个单元格,它对一组数或多组数进行计算,并返回一个或多个结果。

数组公式用一对大括号“{}”来括住,以区别普通公式,且以按“Ctrl+Shift+Enter”组合键结束。

数组公式主要用于建立可以产生多个结果或对可以存放在行和列中的一组参数进行运算的单个公式。数组公式最大的特点就是可以执行多重计算,它返回的是一组数据结果。数组公式最大的特征就是所引用的参数是数组参数,包括区域数组和常量数组。区域数组是一个矩形的单元格区域,如$A$1:$D$5;常量数组是一组给定的常量,例如{1,2,3}、{1;2;3}或{1,2,3;1,2,3}。

数组公式中的参数必须为“矩形”,如{1,2,3;1,2}就无法引用了。输入后同时按“Ctrl+Shift+Enter”组合键,数组公式的外面会自动加上大括号{}予以区分。有的时候,看上去是一般应用的公式也应该属于数组公式,只是它所引用的是数组常量。对于参数为常量数组的公式,则在参数外有大括号{},在公式外则没有,输入时也不必按“Ctrl+Shift+Enter”组合键。