这到底是怎么回事?
让我们看看前面的这个公式:
=SUM(COUNTIFS(B2:B14,{“Male”,”Female”},C2:C14,{“Sealion”;”Mite”},D2:D14,{“Basketball”,”Genealogy”,”Roleplaying”}))
将会转换为:
=SUM({0,1,0;1,0,0})
其中间结果为一个由2行3列组成的数组 。这个数组是怎么来的?
这里的关键是之前提到的元素“配对” 。当两个(或多个)数组具有相同的“向量类型”(即要么都是单列数组,要么都是单行数组)时,Excel将对每个数组中相对应条件进行配对 。因此,在上面的公式中第一个数组{“Male”,”Female”}和第三个数组{“Basketball”,”Genealogy”,”Roleplaying”}都是单行数组,Excel将配对这些元素:第一个是有多少是列B中为“Male”并且列D中是“Basketball”,第二个是有多少是列B中为“Female”并且列D中是“Genealogy” 。
注意到还有另一个数组{“Sea lion”;”Mite”},那是一个单列数组,这将会让我们能够构造一个二维数组 。
并且,第三个数组中的第三个元素“Roleplaying”在第一个数组中并没有相配对的元素 。
然而,Excel会继续构建适当大小的数组以容纳预期的返回值,即上面看到的2行3列的数组 。实际上,对于两个(或更多个)不同维度的数组,Excel解决冲突的方法是人为地增加两个中的较小者,以便使其尺寸等于这些数组中的较大者 。
它是使用零填充这些新创建的多余空间,然后根据需要对结果数组进行操作 。下面,可以给出一个与上面中间结果{0,1,0;1,0,0}的等效表达式,其分解起来如下所示 。

可以看出,先将三个数组中相同向量类型配对,然后与第三个数组交叉计算得到结果 。
再看看前面想得到结果的第二个公式:
=SUM(COUNTIFS(B4:B16,{“Male”,”Female”},C4:C16,{“Sealion”;”Mite”},D4:D16,{“Basketball”;”Genealogy”;”Roleplaying”}))
我们可以预料到中间结果是:
=SUM({0,0;0,0;0,0})
这次是3行2列数组,由6个元素组成 。此时,相同向量类型的数组分别是第二个数组{“Sea lion”;”Mite”}和第三个数组{“Basketball”;”Genealogy”;”Roleplaying”},因此配对如下:”Sea lion”/” Basketball”、”Mite”/”Genealogy”、”???”/”Roleplaying” 。
这三组数据和第一个数组{“Male”,”Female”}交叉运算的结果如下所示 。

小结
尽管本文的主要目的是讨论SUMIFS/COUNTIFS函数系列的操作和语法,但学习到的更重要的方面是对基本方法更深刻的理解之一是通过这种结构来计算 。
有许多的Exceller,其工作清楚地表明了他们对标准公式技术的理解:使用FREQUENCY非常容易;编写出长而复杂的数组公式;会记住经过实践检验的成熟的解决方案;善于在各种情况下使用绝大多数Excel函数 。
但是你不会看到来自同一个人的许多MMULT,而且也不会看到许多非标准的、创新的数组操作(在MMULT之后,也许TRANSPOSE居于最少使用和了解最少的函数的之首) 。但是,这两个函数从本质上具有相同的基本方面,也就是说,它们辅助我们处理要操纵的二维数组 。不是像工作表单元格区域那样的那些可见的东西,而是那些仅位于Excel中间计算链深度之内并且是临时的东西 。
此时,最重要的是,我们要了解可以操纵、查询甚至重新定义这些二维数组构造的基本方法 。然而,我们当中有多少人对这些基本原理如此了解?就像为什么这么少的人在解决方案中使用MMULT?
猜你喜欢
- IFERROR函数,从结果中剔除不需要的值
- 搜狗浏览器怎么实现图标旋转?搜狗浏览器实现图标旋转的方法
- 课堂|花卉养殖小课堂:口红多肉植物怎么养 口红多肉植物如何养?
- 淘宝开店怎么找货源上架商品?如何选品?
- 淘宝信用卡支付怎么开通?相关问题解答
- 淘宝购物车怎么用?使用购物车有好处吗?
- 天猫购物金怎么开通?购物金商品发布流程
- excel图表怎么将十进制数转换成指定进制的数
- 搜狗高速浏览器主页被篡改怎么办?搜狗浏览器中恢复被篡改主页的方法
- 搜狗浏览器热搜怎么关?热搜关闭方法详解
