字典与数组第八讲:工作表数据计算时为什么要采用数组公式(二)

《VBA数组与字典方案》教程(10144533)是我推出的第三套教程,目前已经是第二版修订了。这套教程定位于中级,字典是VBA的精华,我要求学员必学。7.1.3.9教程和手册掌握后,可以解决大多数工作中遇到的实际问题。

这套字典教程共两册,一共八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:字典与数组第八讲:工作表数据计算时为什么要采用数组公式(二)

【分享成果,随喜正能量】念佛的人,功夫从从相貌上看,从体质上看。真正修行的人念佛功夫得力,相貌就改变了,身体就强壮了! 确实,我们的相貌会随着我们修行的功夫转变。。

第八讲 工作表数据计算时为什么要采用数组公式(二)

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

今日继续讲解为什么要采用数组公式,难度比上一讲要难。

1实际问题的场景

我们先看下面的截图:

我们的目标是在表中计算出日期为1月1日,人员为张1的合计产量,怎么办呢?很多人会想到筛选的办法,没错,可以,但太麻烦,如果数据少还可以试试,如果数据多,工作表处理筛选往往会慢些。

2 场景问题的分析

我们考虑利用数组公私的方案,用数组公式的方法来解决.

1)在表工作表I2单元格中录入公式 "=SUM((A2:A14=G2)*(C2:C14=H2)*(D2:D14))"公式。

2)按下"Ctrl+Shift+Enter"组合键。

这个时候,你会发现想要的结果已经出现了:

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

3数组公式的执行过程

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

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

2) A2:A14=G2,实际上就是拿日期中的每一个值依次与G2 中的日期进行比对,如果相等则结果为True,即1,如果不相等则为False 即为0。到了这里也许你有一点明白了,如果不相等,则后面的无需再继续下去了,因为公式里用的全部是"*"乘积符号,任何数

乘0 等于0。

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

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

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

果当然为200 了,然后再在数组公式运行的第二个回合为SUM(1*1*203),结果当然为203 了,我们最终就得到了200+203=403的最终结果。

如果理解了,是不是感觉很简单呢?不过如此。

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

今日内容回向:

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

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

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

我多年的VBA实践经验,全部浓缩在以下教程中:

相关推荐
小白学大数据37 分钟前
基于Splash的搜狗图片动态页面渲染爬取实战指南
开发语言·爬虫·python
xlq2232239 分钟前
22.多态(下)
开发语言·c++·算法
未来之窗软件服务1 小时前
操作系统应用(三十三)php版本选择系统—东方仙盟筑基期
开发语言·php·仙盟创梦ide·东方仙盟·服务器推荐
是Dream呀1 小时前
昇腾实战|算子模板库Catlass与CANN生态适配
开发语言·人工智能·python·华为
零匠学堂20251 小时前
移动学习系统,如何提升企业培训效果?
java·开发语言·spring boot·学习·音视频
小杨快跑~1 小时前
从装饰者到桥接再到工厂:模式组合的艺术
java·开发语言·设计模式
say_fall1 小时前
C语言编程实战:每日一题:随机链表的复制
c语言·开发语言·链表
拾贰_C2 小时前
【Python | Anaconda】 python-Anaconda 一些命令使用
开发语言·python
二川bro2 小时前
循环性能提升:Python向量化计算技巧
开发语言·python
TracyCoder1232 小时前
大白话讲Java NIO
java·开发语言·nio