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

这套字典教程共两册,一共八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA字典与数组第十七讲:工作表数组大小的扩展及意义

VBA字典与数组第十七讲:工作表数组大小的扩展及意义_解决方案



【分享成果,随喜正能量】当你压力大到快要崩溃的时候,不要跟别人讲,也不要觉得自己委屈,没有人会心疼你。在夜深人静的时候,把心掏出来,自己缝缝补补,然后睡一觉醒来,又是信心百倍。


第十七讲 工作表数组大小的扩展及意义

朋友们好,今日给大家继续讲解VBA数组与字典解决方案的第17讲,数组大小的扩充问题。这一讲的内容相对比较简单,在之前的章节中讲了数组与数组的计算规律,也是利用了数组的扩展原理。

1 数组大小扩展的意义

其实,两个数组计算时,参与计算的两个数组得具有相同的维数,对于行列数不匹配的数组,计算时Excel会将数组对象进行扩展,以符合计算需要的维数。每一个参与计算的数组的行数必须与行数最大的数组的行数相同,列数必须与列数最大的数组的列数相同。然后再参与计算。对于行数和列数少的数组匹配到和最大行数的过程就是数组的扩展。这也是数组扩展的意义所在。

2 数组扩展的实例

实例一:公式=SUM({100,200,300,400}*100)里,第一个参数{100,200,300,400}是一行四列的数组,第二个参数不是数组,只是一个数值,为了让第二个数值能与第一个数组进行运算,这时,Excel会自动将第二参数的100扩充成一个一行四列的数组{100,100,100,100}与第一参数匹配。所以,SUM({100,200,300,400}*100) 最后是使用SUM({100,200,300,400}*{100,100,100,100}) 进行计算,得到的结果有了一一对应的元素相运算是100*100,200*100,300*100,400*100的和。那么将数值100匹配成{100,100,100,100}就是一个数组的扩展的过程。

扩展如下面的截图:

VBA字典与数组第十七讲:工作表数组大小的扩展及意义_VBA_02



实例二:={100;200;300;400}+{100,200}的第一个参数{100;200;300;400}是一个四行一列的数组, {100,200}是一个一行二列的数组,在计算时,Excel会将第一个数组自动扩充为一个四行二列的数组{100,100;200,200;300,300;400,400},也会将第二个数组扩充为一个四行二列的数组{100,200;100,200;100,200;100,200},所以={100;200;300;400}+{100,200}这个公式最后是使用公式={100,100;200,200;300,300;400,400}+{100,200;100,200;100,200;100,200}进行计算。公式最后返回的数组也是一个四行二列的数组。

VBA字典与数组第十七讲:工作表数组大小的扩展及意义_VBA_03



好了,数组的扩展问题就讲到这里,工作表数组的系列专题到这章就全部结束了。


今日内容回向:

1 什么是数组的扩展?

2 数组的扩展的意义是什么?




VBA字典与数组第十七讲:工作表数组大小的扩展及意义_数组_04




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




VBA字典与数组第十七讲:工作表数组大小的扩展及意义_VBA_05