数组公式很难吗?那是你不知道数组的运算规则
你好,我是刘卓。欢迎来到我的公号,excel函数解析。有些小伙伴经过一段时间的学习,对于常用函数的用法可能都掌握了,但是涉及到数组用法的时候,仍然一头雾水,那可能是你不知道数组的运算规则。
数组及分类
在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,"国庆"}中"国庆"就是文本常量元素。
内存数组是指通过运算符或公式计算,返回的多个结果值在内存中临时存储的数组。内存数组不必存储到单元格区域中,可以整体作为其他函数的参数参与运算。
其中C2:C9*D2:D9这部分得到的结果为{3850;5544;5423;2793;2478;2106;4147;2394},这些数据并没有存储在单元格区域中,而是存储在内存中,所以它就是内存数组。
然后再把这个内存数组的结果交给sum函数求和。内存数组的公式一般都要按ctrl+shift+enter三键才能得到正确的结果。当然有些函数例外,比如sumproduct,lookup,frequency等。
数组的运算
对于一维横向数组与单值的运算也是一样的,大家可以自己尝试。
2.3一维数组与一维数组的运算
先看方向相同的一维数组的运算,下图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一维数组与二维数组的运算