Excel数组运算是对一组数据批量执行计算并返回单个或多个结果的技术,核心分为动态数组公式(新版,按Enter即可)和传统CSE数组公式(旧版,需Ctrl+Shift+Enter)两类
数组公式可以返回多个结果,也可以返回单个结果。通俗一点说就是进行批量运算的公式。
1.数组与常量的运算
一维横向数组与常量
如下表格显示

选中A3:C3,输入:=A1:C1+3
在公式中选中A1:C1+3,按F9,显示:={4,5,6}
数字之间以,隔开,表示4、5、6在同一行。
这里的运算规则就是把原来的一维数组的3个数字同时+3,并且保持一维数组的维度不变。
最后选中A3:C3,输入:=A1:C1+3
按Ctrl+shift+enter,返回数组:={4,5,6}
一维纵向数组与常量
如下表格显示,E3:E5区域显示数组为:={1;2;3}

选中F3:F5,输入:=E3:E5*2
在公式中选中E3:E5*2,按F9,显示:={2;4;6}
其运算规则也是把原来的一维数组的3个数字同时乘以2,并且保持一维数组的维度不变。
选中F3:F5,输入:=E3:E5*2
按Ctrl+shift+enter,返回数组:={2;4;6}
如下表格显示,用常量1除以数组

E1:E3显示数组:={2;4;5}
选中F1:F3,输入:=1/E1:E3
按Ctrl+shift+enter,返回数组:={0.5;0.25;0.2}
二维数组与常量
如下表格显示,A8:B10区域显示数组为:={1,2;3,4;5,6}

选中D8:E10,输入:=A8:B10+3,按Ctrl+shift+enter,返回数组:={4,5;6,7;8,9}
其运算规则也是把原来的二维数组的6个数字同时+3,并且保持二维数组的维度不变。
由此得到结论,无论是一维数组与常量还是二维数组与常量的运算,就是把常量分别与数组中的每一个元素进行加减乘除的运算,
并且保持原来数组的维度不变。
2.一维数组与一维数组运算
横向一维数组与横向一维数组
如下表格显示,A1:C1区域显示数组为:={1,2,3}
A2:C2区域显示数组为:={1,2,3}

选中A3:C3,输入:=A1:C1+A2:C2,按Ctrl+shift+enter,返回数组:={2,4,6}
显然是将两个一维数组3个数字一一对应的相加,即1+1=2,2+2=4,3+3=6
如果数组大小不一样
如下表格显示,

A1:C1区域显示数组为:={1,2,3}
A2:B2区域显示数组为:={1,2}
选中A3:C3,输入:=A1:C1+A2:B2,按Ctrl+shift+enter,返回数组:={2,4,#N/A}
此时选中A3:C3,输入:=A1:C1+A2:B2,按Ctrl+shift+enter,显示左侧结果即1+1=2,2+2=4,到3时,发现3下面没有元素,所以不能运算,只能返回#N/A。
纵向一维数组与纵向一维数组
如下表格显示,A1:A3区域显示数组为:={2;3;4}
B1:B3区域显示数组为:={3;4;5}

选中C1:C3,输入:=A1:A3*B1:B3,按Ctrl+shift+enter,返回数组:={6;12;20}
以上从写法上看是两个数组相乘,但实际过程是:A1*B1,A2*B2,A3*B3,他是将数组中的每一个元素分别进行计算,这样分别计算的结果,自然也是一个数组。
那么这里为什么不是:A1*B2,A2*B3,A3*B1这样交叉相乘。
那是因为Excel就是这样规定的,两个同方向一维数组进行运算,只能是两个数组中相对应的两个元素进行运算,即A1*B1,A2*B2,A3*B3,不会出现A1*B2,A2*B3,A3*B1这样交叉相乘的情况。
如果两个纵向一维数组大小不一样,又会出现什么问题呢?
如下面表格显示,

A1:A3区域显示数组为:={2;3;4}
B1:B2区域显示数组为:={3;4}
选中C1:C3,输入:=A1:A3*B1:B2,按Ctrl+shift+enter,
返回数组:={6;12;#N/A}。
当两个方向相同的一维数组相乘,但是大小不一样时,多出来的那一部分会出现错误值,这里多出了A3,在B1:B2中没有元素和它运算,所以返回错误值。
3.横向一维数组与纵向一维数组
如下面表格显示,A2:A4区域显示数组为:={2;3;4}
B1:D1区域显示数组为:={3,4,5}

先选中B2:D4,输入:=B1:D1+A2:A4,按Ctrl+shift+enter,
返回数组:={5,6,7;6,7,8;7,8,9}。
横向一维数组与纵向一维数组的运算规则是,
A2中的2与B1:D1的3,4,5分别相加得到5,6,7
A3中的3与B1:D1的3,4,5分别相加得到6,7,8
A4中的4与B1:D1的3,4,5分别相加得到7,8,9
这样就得到了一个二维数组,这个二维数组的行数就等于这个一维纵向数组的行数,二维数组的列数就等于这个一维横向数组的列数。
4.二维数组与一维数组(二维数组要与一维数组同方向上的大小相同)
如下面表格显示

选中B3:D5,输入=B1:D1+A3:A5,按Ctrl+shift+enter,返回数组:={2,3,4;3,4,5;#N/A,#N/A,#N/A}。
这里的一维数组是纵向的,且一维数组在纵向上有3行,而二维数组在纵向上只有2行,所以一维数组中A5的3就没有办法和二维数组中数字运算,所以就返回错误值。
同样,当一维数组是横向数组,如下表格显示

选中C2:E4,输入:=C1:E1+A2:B4,按Ctrl+shift+enter,
返回数组:={2,3,#N/A;3,4,#N/A;4,5,#N/A}
这里的一维数组是横向的,且一维数组在横向上有3列,而二维数组在横向上只有2列,所以一维数组中E1的3就没有办法和二维数组中数字运算,所以就返回错误值。
5.二维数组与二维数组(要求两个二维数组大小相同)
如下面表格显示

选中D1:F2,输入:=A1:C2+A4:C5,按Ctrl+shift+enter,
返回数组:={3,5,8;7,9,13}
两个数组大小相同,就是对应单元格中元素分别相加。
如果两个二维数组大小不同
如下面表格显示

选中C3:E6,输入:=A3:B6+C1:E2,按Ctrl+shift+enter,返回如下结果
二维数组与二维数组运算,就是以少的维度进行运算,即左边是4行2列的数组,以2列来运算,右边是2行3列的数组,以2行来运算,最终得到一个2行2列的数组,其他都是#N/A
注意事项
1.动态数组公式:适用于Excel365/2021+,公式写在左上角单元格,按Enter确认,结果自动“溢出”填充相邻区域;支持FILTER、UNIQUE、SEQUENCE等新函数。
2.传统CSE数组公式:适用于旧版Excel,需先选中输出区域,输入公式后按
Ctrl+Shift+Enter确认,公式两端自动加{};编辑或删除需选中整个区域。
3.内存数组运算:在SUMPRODUCT、
SUM(IF())等函数内部隐式进行,无需特殊按键,直接处理区域乘积或逻辑判断。
4.溢出错误(#SPILL!):动态数组结果区域若有数据阻挡,无法溢出,需清空阻挡单元格。
编辑限制:传统CSE公式不可单独修改结果区某格,必须整体编辑;动态数组仅需改源单元格。
符号区分:数组常量中逗号,代表横向(列),分号;代表纵向(行),如{1,2;3,4}为2行2列。
若你使用的是较新版本的Excel(如Microsoft365),优先使用动态数组函数(如
FILTER,XLOOKUP,UNIQUE),无需记忆三键组合,效率更高且不易出错。
夜雨聆风