excel中数组常量中的值可以是常量和公式 |深入理解数组公式及理解vlookup逆向查找的原理

100次浏览     发布时间:2024-07-27 16:02:45    

Excel纵横交错的单元格集合就是一个天然的二维数组。

所谓数组公式就是在公式中使用了数组的公式。数组可以是常量数组,也可以是区域数组。

在Excel函数与公式中,数组是按一行、一列或多行多列排列的一组数据元素的集合。数据元素可以是数值、文本、日期、逻辑值或错误值等。

1 数组的维度

数组的维度是指数组的行列方向。

1.1 横向数组:一行多列;

1.2 纵向数组:一列多行;

1.3 二维数组:多行多列;

只有一行或一列的数组称为一维数组,上述的横向数组和纵向数组就是一维数组。

2 常量数组

常量数组是指直接在公式中写入数组元素,并用大括号“{}“在首尾进行标识的字符串表达式。常量数组不依赖单元格区域,可直接参与计算。

常量数组的组成元素只可以是常量元素,不能是函数、公式或单元格应用。数值型常量元素中不可以包含美元符号、逗号和百分号。

2.1 一维纵向常量数组

={1;2;3;4;5}

各元素用半角分号“;“分隔;

2.2 一维横向常量数组

={1,2,3,4,5}

各元素用半角逗号“,“分隔;

2.3 二维常量数组

={1,2,3;"姓名","王一","2004/10/13";TRUE,FALSE,#N/A;#DIV/0,#NUM!,#REF!}

如果将这个数组填入表格区域中,排列方式如下图所示:

3 区域数组

区域数组实际上就是公式中对单元格区域的直接引用,维度和尺寸与常量数组完全一致,如以下公式:

=sumproduct(E2:E9*F2:F9)

其中的E2:E9和F2:F9就是区域数组。

(sumproduct函数支持区域数组做为参数)

如果在G3单元格输入=sum(E2:E9*F2:F9),按<ctrl+shift+enter>组合键,就会建立数组公式:

{=sum(E2:E9*F2:F9)}

E2:E9*F2:F9计算的结果产生一个一维纵向常量数组:

{113.4;144.6;138;192.5}

函数sum就将各数组各元素值相加。

4 需要使用数组公式的场合

4.1 当公式的计算过程中存在多项计算,并且使用的函数不支持非常量数组的多项计算时;

4.2 当公式的计算结果为数组,需要在多个单元格内存放公式计算结果时。

当然,并非所有执行多项计算的公式都必须以数组公式的输入方式来完成编辑。在array数组型或vector向量类型的函数参数中使用数组,并返回单一结果时,不需要使用数组公式就能自动进行多项计算,如sumproduct()、lookup()、mmult()等函数。

5 使用数组公式进行多条件查询

基本思路就是将多个查询条件通过“&“文本连接符连接成一个字符串,然后使用数组公式将条件对应的列的单元格也通过文件连接符连接起来,并进行匹配和定位:

=INDEX(D:D,MATCH(G2&G3,B1:B10&C1:C10,0))

B1:B10&C1:C10返回的就是一个一维纵向数组:

{"姓名科目";"A语文";"B数学";"C英语";"B语文";"B英语";"G数学";"H数学";"I英语";"J语文"}

(在上述公式中,选择B1:B10&C1:C10,按F9,即可查看这部分公式的结果,也就是显示上面的数组)

6 利用数组公式实现vlookup函数的逆向查询

如上表通过姓名查找对应的序号,就是逆向查找,一般用以下公式可能实现:

=INDEX(A:A,MATCH(G2,B:B))

使用数组公式,也可以用vlookup函数实现:

=VLOOKUP(G2,IF({1,0},B2:B10,A2:A10),2,0)

利用横向数组{1,0}与两个纵向数组数组进行运算,实现姓名与序号两列的互换,生成一个二维数组:

{"A",1;"B",2;"C",3;"B",4;"B",5;"G",6;"H",7;"I",8;"J",9}

(在上述公式中,选择IF({1,0},B2:B10,A2:A10),按F9,即可查看这部分公式的结果,也就是显示上式)