常量数组:如上面那样,直接用半角{}引用起来的一组数据,其中的数据(每一项都叫一个元素)都是常量。显然从例子中可以看到,同一行的数据之间用半角逗号分隔,不同行的数据用半角分号分隔。而且每一行的元素数目要相等,不相等会报错。区域数组:一个引用区域。下面的A1:B3(中间的冒号也是半角)就是区域数组,它引用了前面的内容。我们在使用求和函数SUM或者其它很多函数的时候就已经见到过了,只不过那时没有说“区域数组”这个名词而已。内存数组:有些公式计算结果也是数组,比如Filter的结果就是数组,其内容保存在内存中,这种数组就是内存数组,当然我们最终还是要把结果显示在单元格里。一维数组:可能是一行或者一列的一个区域,也可能是只包含一维数据的一个常量数组、或者函数计算结果。我将用几篇文章介绍常用的一些数组公式,包括函数和运算符。此函数可以把一维数组转化为二维数组,参数1是要转换的数组,参数2指定了每行有几个元素。如果参数1不是参数2的倍数时,所差部分会显示错误值#N/A。要避免这种情况,可以套上IFNA函数。它可以用于处理出现#N/A错误时用什么来代替这个错误值,比如下面就是用空字符串来代替。WRAPCOLS函数与WRAPROWS类似,所不同的是,第二个参数是指定每列有几行。注意WRAPROWS和WRAPCOLS在转化时有区别:前者是先填满一行再填下一行,后者是填满一列再填下一列。
这两个函数也可以实现常量数组的转化,比如下面的例子中,参数1是常量数组,参数2是每列有几行:
=WRAPCOLS({1,2,3,4,5},2)
=WRAPROWS(FILTER(B2:B6,A2:A6=1),3)
本例的Filter函数用于挑选班级=1的学生,要求每行三列,但是返回结果的元素个数少于指定的列数,WRAPROWS会自动减少占用区域。
三、TOROW与TOCOL函数
与前面例子相反的需求就是把二维数组转换成一维数组。
=TOROW(A1:C2)
比如这里,就用TOROW函数把二维数组转化成了横向的一维数组。类似的,TOCOL函数可以把二维数组转化为纵向的一维数组。