数组公式很难吗?那是你不知道数组的运算规则

你好,我是刘卓。欢迎来到我的公号,excel函数解析。有些小伙伴经过一段时间的学习,对于常用函数的用法可能都掌握了,但是涉及到数组用法的时候,仍然一头雾水,那可能是你不知道数组的运算规则。

今天就来和大家分享下什么是数组以及数组的运算规则。
-01-

数组及分类

1.1什么是数组

在excel函数中,数组是指按一行、一列或多行多列排列的一组数据元素的集合。比如{1,"a",true}就是一个常量数组。其中1,"a",true是这个数组中的数据,也叫数组的元素。数组的元素可以是数值,文本,逻辑值,错误值,日期时间等。

数组的元素之间是有序排列的。比如{1,2,3}和{3,2,1}是两个不同的数组。数组的运算规则和有序性相关。

1.2数组的分类

数组按维度可以分为一维数组和二维数组。一维数组是指一行或一列的数组,二维数组是指多行多列的数组。

数组按类别可以分为常量数组和内存数组。

常量数组是指直接在公式中输入数组元素,两端加上大括号“{ }”。比如{1,2,3}就是一个常量数组,它不依赖单元格区域,可以直接参与公式的计算。在公式编辑栏输入公式=SUM({1,2,3}),得到结果为6。

常量数组的元素只可以为常量元素,不能是函数、公式或单元格引用。

数值型常量元素中不可以包含美元符号$,百分号%,斜杠/等。比如当输入公式=SUM({1,2,3%})时,会弹出提示此公式有问题。

文本型常量元素必须用半角双引号""将本文包裹起来,比如{1,2,"国庆"}中"国庆"就是文本常量元素。

内存数组是指通过运算符或公式计算,返回的多个结果值在内存中临时存储的数组。内存数组不必存储到单元格区域中,可以整体作为其他函数的参数参与运算。

还是举个例子:如下图所示,计算所有产品的总销量。在F2单元格中输入公式=SUM(C2:C9*D2:D9),按ctrl+shift+enter三键完成。

其中C2:C9*D2:D9这部分得到的结果为{3850;5544;5423;2793;2478;2106;4147;2394},这些数据并没有存储在单元格区域中,而是存储在内存中,所以它就是内存数组。

然后再把这个内存数组的结果交给sum函数求和。内存数组的公式一般都要按ctrl+shift+enter三键才能得到正确的结果。当然有些函数例外,比如sumproduct,lookup,frequency等。


-02-

数组的运算

2.1一维数组与单值的运算
如下图所示,A14:A18是一维纵向数组,单值为2。让它们进行相乘的运算,结果为E列所示。运算的方式是让数组中的每个元素分别与单值进行运算,简单来说就是1*2=2,2*2=4···。结果的尺寸与原数组的尺寸大小一样。

对于一维横向数组与单值的运算也是一样的,大家可以自己尝试。

2.2二维数组与单值的运算
二维数组与单值的运算和一维数组与单值的运算一样,也是数组中的每个元素分别与单值进行运算。将A23:B27这个二维数组与10相加,得到的结果如D23:E27所示。结果区域与原数组尺寸大小一样,都是5行2列。

2.3一维数组与一维数组的运算

一维数组间的运算要分为两种情况:方向相同的2个一维数组的运算,方向不同的2个一维数组的运算。

先看方向相同的一维数组的运算,下图A33:A38和C33:C38分别是2个一维纵向数组,它们方向相同。让它们做加法的运算,结果如E列所示。运算规则是对应位置的元素分别相加,也就是1+2,2+3,3+4···,一一对应,比较专一。

再来看方向不同的一维数组的运算,下图B44:B49是一维纵向数组,D42:E42是一维横向数组。让它们做加法运算,结果如D44:E49所示。

这时的运算规则就不是一一对应了,而是第1个数组的所有元素分别与第2个数组的所有元素进行运算,结果尺寸为6行2列,也就是取纵向数组的行数,横向数组的列数。

具体运算就是1+2,1+3,换行,2+2,2+3,换行。。。

2.4一维数组与二维数组的运算

下图A54:A59是一维纵向数组,C54:D59是二维数组。首先它们有一个维度是一样的尺寸,也就是都有6行。让它们进行相加的运算,得到的结果如F54:G59所示。运算规则是第1个数组的第n个元素与第2个数组的第n行的所有元素分别相加,也就是1+1,1+10,换行,2+3,2+20···
2.5二维数组与二维数组的运算
下图A64:B67是一个4行2列的二维数组,D64:E66是一个3行2列的二维数组。让它们进行相加的运算,得到的结果如G64:H67所示。二维数组间的运算也是一一对应的,也就是对应位置的元素分别进行运算。即1+10,2+20,3+30,4+40,5+50,6+60,由于7和8没有对应元素与它们相加,所以返回的结果为错误值#n/a。
(0)

相关推荐