vba数组如何精确筛选_VBA数组与字典解决方案第8讲:为什么要采用数组公式(二)...

大家好,今日继续讲解VBA数组与字典解决方案,今日的内容是第8讲。在上一讲的数组专题中,我详细地讲了利用数组公式的好处,或许有的朋友还没有充分理解,今日继续给大家讲解。我在讲解中,力争每篇文章可以作为一个独立的单元,但不能完全避免知识点的引用,还希望有志于学习的朋友,能多前后的看看本书的其他文章。

今日继续讲解为什么要采用数组公式,难度比上一讲要难,我们先看下面的截图:

0d554ca3611c2d5fc3947788ec6c6689.png

我们的目标是在表中计算出日期为1月1日,人员为张1的合计产量,怎么办呢?很多人会想到筛选的办法,没错,可以,但太麻烦,如果数据少还可以试试,如果数据多,是不可取的。下面我们用数组公式的方法来解决.

在表中录入公式 "=SUM((A2:A14=G2)*(C2:C14=H2)*(D2:D14))"公式,然后按下"Ctrl+Shift+Enter"组合键,你会发现想要的结果已经出现了:

97ee514afecfd560779c8378cb3b083c.png

数组公式就是这么简单,解决问题也是这么简单。从这次用的公式可以看出,连判断的条件函数IF 都不要了,实际上这里的"="符号就是起到了一个类似IF 的效果。

这里再说明一下公式=SUM((A2:A14=G2)*(C2:C14=H2)*(D2:D14))的执行过程:

a) 公式中A2:A14 表示数组区域,这个相信已经不需要再说明了,放到数组公式中就是依次取数组中的各个数值,也就是依次取日期中的值。

b) A2:A14=G2,实际上就是拿日期中的每一个值依次与G2 中的日期进行比对,如果相等

则结果为True,即1,如果不相等则为False 即为0。到了这里也许你有一点明白了,如果

第一不相等,则后面的无需再继续下去了,因为公式里用的全部是"*"乘积符号,任何数

乘0 等于0。

c) 再继续判断C2:C14 区域,也就是用姓名依次比对,如果和H2 中的姓名相同,则为Ture,即1,如果为False,即0,继续下一个回合。如果此项也为Ture,

d)很明显前面两项的结果为1*1=1,再乘以D2:D14 数组中对应的数字,即符合条件的"实绩",

以第一个符合条件的第一条记录为例,在数组公式运行的第一个回合为SUM(1*1*200),结

果当然为200 了,然后再在数组公式运行的第二个回合为SUM(1*1*203),结

果当然为203 了,我们最终就得到了200+203=403的最终结果。

如果理解了,是不是感觉很简单呢?不过如此。数组公式非常有用,效率也高,但真正的理解、熟练掌握也不是一件很容易的事。但大家记住数组中的数据是一一对应的,放到数组公式中使用时,数组中的数据会按顺序依次参与相应的运算。

今日内容回向:

1 TRUE参与四则运算时代表是什么数字?

2 FALSE参与四则运算时代表是什么数字?

3 数组可以代替SUMIF的运算,是如何实践的?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值