一起聊聊Excel中的数组

有人说数组是Excel函数的精华,也有人说数组是Excel函数的糟粕,男说男有理女说女有爱,各有各的理由——所以王源说世间没有真正的感同身受 。但不管怎么说吧,数组作为Excel函数进阶后的知识,是相当部分Excel使用者都绕不过去的一条……河 。
我想数组多少还是要学一下的 。
那么什么是数组?什么是数组运算?什么是数组公式?三者之间有何神秘关系?数组公式的概念为什么在坊间屡次引发了场面壮观的口水战?牵牵手,跟我来 。
什么是数组
简单而言,数组是元素的有序集合 。
元素这里可以理解为数据 。不知道你是否还记得,在本系列函数教程前面章节,咱们讲了什么是Excel数据 。元素可以是数据类型中的任意:数值、文本、逻辑值、错误值均可 。
有序集合指的是数组内的元素排列是有顺序的 。
我举个小栗子 。
={1,2,"星光",TRUE}
这是一个常量数组 。包含了数值(1,2),文本("星光"),逻辑值(TRUE),3种类型的元素 。元素有序排列,第1个是1,第2个是2,第3个是星光,第4个是TRUE 。
如果我们要取出该数组内第3个元素的值,可以使用INDEX函数 。
=INDEX({1,2,"星光",TRUE},3)
有序是数组运算的基础,如果数组元素是无序的,我们很难高效控制数组间元素的运算和准确获取运算后的完整结果 。
……
数组的分类
人按性别可以分为男人、女人;按年龄可以分为老人、中年、青年、少年等 。数组公式按照不同的标准也可以分为不同类别 。
按照维度,数组可以分为一维数组、二维数组和多维数组 。数据只有一行或一列的数组被称为一维数组,数据有多行多列的数组被称为二维数组 。由不同平面二维数组构成的数组被称为多维数组(或者说多维引用),Excel函数数组最高只有三维 。
按照数据来源,数组又可以分为常量数组、内存数组和区域数组 。
……量数组顾名思义是由常数构成的数组,典型标志是在首尾有一对大括号{}
例如咱们上面举的例子:
={1,2,"星光",TRUE}
常量数组只能由常数组成,不能存在单元格引用、嵌套函数等形式 。
比如下面的常量数组中存放了sum函数,是规则绝对不允许的,钱再多权再大都没用——暂时 。
={2,sum(a2),1}
在Excel中输入上面的公式,系统会显示以下错误信息 。

一起聊聊Excel中的数组

文章插图
 
内存数组是指在函数运算过程中数据保存在内存里的数组,它是某个公式的计算结果,然后又嵌套在另一个公式中继续参与运算 。
这话听起来有点儿绕,我举个例子 。
一起聊聊Excel中的数组

文章插图
 
如上图所示,我们需要计算人头售出总金额 。H1单元格公式如下:
=SUMPRODUCT(B2:B5*C2:C5)
B2:B5*C2:C5是指B2:B5的人头单价分别乘以C2:C5的数量,得到的是4个元素的数组{12;70;30;15},但这4个元素保存到哪儿去了呢?显然没有保存到单元格中,而是保存到了电脑的内存里 。它作为SUMPRODUCT函数的一个参数,继续参与公式运算,像这样的情况,我们称之为内存数组 。区域数组就比较简单,是在公式中对单元格区域的引用,比如公式:
=A2:A10
什么是数组运算
既然有数组,也就有数组和数组之间的运算,这就好比既然有男人,必然就有……你猜?——数组运算又被称为多项运算,是指同时对一组或多组数组内的元素执行运算 。既然是运算,必然有规则,这就好比既然有战争,必然就有……你再猜?——数组运算规则总结起来有以下几种情况 。
……
第1种情况是一维数组和单值之间进行运算 。
前面咱们讲过,一维数组是指单行或单列元素构成的数组 。
单行数组又被称为水平数组,例如单元格区域A1:D1,常量数组{1,2,3,4} 。
单列数组又被称为垂直数组,例如单元格区域A1:A4,常量数组{1;2;3;4} 。
很明显,单行数组由多列数据构成,比如A1:D1,有A/B/C/D四列;单列数组由多行数据构成,比如A1:A4,有第1/2/3/4四行 。在常量数组中分号代表行(分号有两层,只有行才分层,所以它代表行),逗号代表列 。
一起聊聊Excel中的数组

文章插图
 
数组和单值之间执行多项运算,必然返回同尺寸的数组 。


推荐阅读