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

《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实践经验,全部浓缩在以下教程中:

相关推荐
isyangli_blog4 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php
vb2008114 小时前
FastAPI APIRouter
开发语言·python
Benszen4 小时前
KVM虚拟化解决方案
开发语言·perl
会编程的土豆4 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
東雪木4 小时前
多线程与并发编程 专属复习笔记
java·开发语言·笔记·java面试
杨充5 小时前
1.3 浮点型数据设计灵魂
开发语言·python·算法
噜噜噜阿鲁~5 小时前
python学习笔记 | 11.3、面向对象高级编程-多重继承
java·开发语言
basketball6165 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
春生野草5 小时前
反射、Tomcat执行
java·开发语言
雪的季节6 小时前
企业级 Qt 全功能项目
开发语言·数据库·qt