d:{=sum(if((d43:d52>30)*(c43:c52=”女“)*((b43:b52=”高级“)+(b43:b52=”见习级“)),e43:e52,0))},返回6000。
编写数组公式的关键在于理解条件之间的关系,理清是交集还是并集,是“与”的关系还是“或”的关系。
在数组公式中,逻辑“与”(即同时满足条件)不能用and函数来表示,而要用星号“*”来表示;逻辑“或”(即满足条件之一即可)不能用or函数来表示,而要用加号“+”来表示。
另外,不同时满足要用“<>”来表示。
以问题a为例,“d43:d52>30”、“b43:b52=”高级“”、“c43:c52=”男“”分别为三个数组的判断条件,比如“d43:d52>30”,实际上在数组运算中是从d43单元格开始直到d52单元格依次判断单元格中的数值是否大于30,如果满足条件,返回逻辑值true,否则返回false,因此d43:d52>30返回的是一个逻辑值组成的数组,在本例中为{true,false,false,false,false,true,true,true,false,false}。
同理,“b43:b52=”高级“”和“c43:c52=”男“”也分别返回一个由true和false组成的数组。
因此,“(d43:d52>30)*(b43:b52=”高级“)*(c43:c52=”男“)”即为三个逻辑数组相乘,逻辑值在参与运算时true等于1,false等于0,所以,当三个数组中对应位置的元素都为true,即三个条件都同时满足时,乘积的结果为1;否则,只要有一个条件不满足,乘积结果就为0。
这样,“(d43:d52>30)*(b43:b52=”高级“)*(c43:c52=”男“)”返回的是一个由1和0组成的数组,对这个数组进行sum求和,数组中有几个1,证明有几个人满足条件,返回的结果就是几。
而在问题d的数组公式中,“((b43:b52=”高级“)+(b43:b52=”见习级“))”表示两个条件是“或”的关系,要用加号连接,并且要用括号将两个条件括起来。
因为乘积运算的优先级高于加号,如果不加括号,数组公式将先与“(b43:b52=”高级“)”乘积再与“(b43:b52=”见习级“)”求和。
“b43:b52=”高级“”在本例中返回的数组为{1,0,0,0,0,1,1,0,0,0},而“b43:b52=”见习级“”返回的数组为{0,0,1,0,0,0,0,0,0,0},两个数组相加即得到一个新的数组{1,0,1,0,0,1,1,0,0,0}。
- 1:维度 左手数据,右手图表——Excel动态图表制作与职场数据沟通 第208页
- 2:下拉菜单 左手数据,右手图表——Excel动态图表制作与职场数据沟通 第384页
- 3:相机 左手数据,右手图表——Excel动态图表制作与职场数据沟通 第446页
- 4:信贷业务 左手数据,右手图表——Excel动态图表制作与职场数据沟通 第426页
- 5:选项卡 左手数据,右手图表——Excel动态图表制作与职场数据沟通 第75页
- 6:选项卡 左手数据,右手图表——Excel动态图表制作与职场数据沟通 第360页
- 7:银行 左手数据,右手图表——Excel动态图表制作与职场数据沟通 第192页
- 8:银行客户经理 左手数据,右手图表——Excel动态图表制作与职场数据沟通 第37页
- 9:activex 左手数据,右手图表——Excel动态图表制作与职场数据沟通 第184页
- 10:activex控件 左手数据,右手图表——Excel动态图表制作与职场数据沟通 第76页