……
总结一下,两个不同方向的一维数组,也就是X行垂直数组和Y列水平数组进行运算,其运算方式是垂直数组中每一个元素分别与水平数组的每一个元素一一运算,返回X行Y列的二维数组 。
……
闭上眼睛,休息一下 。
……
第3种情况是一维数组和二维数组之间的运算 。
再说一下什么是二维数组,由多行多列元素构成的数组是二维数组,比如单元格区域B2:D4是一个3行3列的二维数组 。
一维数组和二维数组之间的运算是什么情况呢?
还是举个例子 。
文章插图
如上图所示数据为例,A1:B4是不同次数考试成绩的加权系数,D1:G4是该班成绩明细,如果需要计算所有人考试成绩加权系数后的总分,可以使用以下公式 。
=SUMPRODUCT(B2:B4*E2:F4)
B2:B4是一维垂直数组,E2:F4是3行2列的二维数组,两者之间做乘法运算 。
根据有序原则,首先运算的是B2 。
B2先和E2运算,B2*E2,然后再和F2运算,B2*F2 。
文章插图
B3先和E3运算,B3*E3,然后再和F3运算,B3*F3 。
文章插图
B4先和E4运算,B4*E4,然后再和F4运算,B4*F4 。
文章插图
最后SUMPRODUCT函数执行汇总求和 。
这就是典型的一夫多妻制了,当然,也可以说是一妻多夫制 。按照先来后到的顺序,B2娶了两个老婆E2和F2、B3也娶了两个老婆E3和F3……
有些男同胞又蠢蠢欲动,以为这是盛世复兴的景象……那可就又未必了,什么是先来后到了解一下?
比如公式:
=SUMPRODUCT(B2:B5*E2:F4)
B2:B5是4行元素的垂直数组,E2:G4是三行两列元素的二维数组 。前者比后者多了一行;当B2娶走了E2和F2,B3娶走了E3和F3,B4娶走了E4和F4……剩下一个B5,没有老婆可娶了,怎么办呢?——老办法,返回错误值补位吧 。
{48,83;27.6,19.2;10.4,18.2;#N/A,#N/A}
错误值是无法统计求和的,因此这条SUMPRODUCT函数最后会返回了错误值 。
总结一下,一维数组和二维数组做运算的过程是一维数组的每个元素和同方向二维数组的每个元素一一对应运算,最后结果返回一个二维数组 。如果两个数组相同方向的元素数量不一致,会产生错误值补位 。
……
第4种情况是二维数组和二维数组之间的运算 。
二维数组相互运算,要求两者具有完全相同的尺寸,也就是行数和列数都要相同 。运算的过程是将每个相同位置的元素两两对应,返回一个与它们尺寸一致的二维数组结果 。
——如果两个数组的尺寸大小不一样呢?当然还是老办法,以错误值进行补位 。
举个例子 。
如上图所示,A1:D4是成绩表;需要汇总大于等于60分的成绩之和 。
文章插图
公式如下 。
=SUMPRODUCT((B2:D4>=60)*B2:D4)
公式首先运算B2:D4>=60部分,B2:D4是3行3列的二维数组,60是单值,因此这是二维数组和单值做比较运算,数组的内每个元素分别和60分比大小,大于等于60返回TRUE,否则返回FALSE,结果返回一个3行3列的由逻辑值构成的二维内存数组 。
{FALSE,FALSE,TRUE;FALSE,TRUE,TRUE;TRUE,TRUE,TRUE}
将该数组映射到单元格中,如下图所示 。
文章插图
公式继续运算,将这个二维数组和B2:D4做乘法运算,这就属于两个二维数组之间的运算了 。
按照有序原则,系统会将两个数组相同位置的元素一一运算,是的,又回到一夫一妻制 。A数组的第1个元素和B数组的第1个元素结婚,A数组的第2个元素和B数组的第2个元素结婚……直至两个数组的元素用完;如果两个数组元素不一样多,照例用错误值补位 。
TRUE在数学运算中视为1,FALSE视为0,因此这一步返回内存数组如下 。
{0,0,91;0,74,89;65,80,60}
文章插图
最后SUMPRODUCT执行求和运算,返回结果459.
……
第5种情况是多维数组的运算 。这个一般人一般时候也用不上,咱们还是放到引用和多维引用篇里再讲 。
推荐阅读
- excel表格的软件特色
- 关注优惠券与店铺优惠券可以一起使用 优惠券使用规则
- Excel中,OFFSET函数的使用方法
- 丝瓜和什么一起炒好吃
- 丝瓜和红萝卜一起吃吗
- 丝瓜黄瓜可以一起炒吗
- 梨和核桃可以一起吃吗
- 葡萄和茶水能一起吃吗?
- 芒果与桃子能一起吃吗?
- 秋葵能和胡萝卜一起炒吗?