VBA中可以使用数组处理工作表中的数据,是个尽人皆知的秘密了,读取数据加载到数组中也很简单。
工作表中数据如下图所示,需要将B1:G1的内容加载到数组中。
哒哒,一行代码瞬间生成一个二维数组,不要问为什么是二维数组?为什么使用方括号?如果真的对这两点有疑问,请自行爬楼翻翻我以前的博文,都有详细讲解。
Sub Demo1()
arr = [B1:G1]
End Sub
可是某些英明(奇葩 )的领导非要这样的格式,完全不知道这是为了个毛呀!?
这个该如何弄到一个数组中呢,先分别读入数组,然后再使用动态数组就和合并成2x3的数组了。
Sub Demo2()
Dim crr(1 To 2, 1 To 3)
arr = [B1:D1]
brr = [E2:G2]
For i = 1 To 3
crr(1, i) = arr(1, i)
crr(2, i) = brr(1, i)
Next
End Sub
有些不甘心,这么简单的一个事情,要这么多行代码。千万不要忘记,我们是在用Excel中玩儿VBA,Excel中强大的公式可以把这个简化为一行代码就能实现。
啥也别说了,直接上代码。
Sub Demo3()
arr = [Choose({1;2},B1:D1,E2:G2)]
brr = [if({1;0},B1:D1,E2:G2)]
End Sub
【代码解析】
两行代码都可以实现一次性加载到2x3数组中,实现思路是相同的,只是使用的公式不同。
Choose函数根据指定的索引值,从参数串中选择值。此处的参数是两个单元格区域,这样就分两次分别选中了B1:D1和E2:G2单元格区域。
工作表中的If函数将不用解释了,这里需要注意的是,数组{1;0}两个数字的顺序和后面单元格区域的顺序要正确匹配。
看似旁门左道,其实是超级敏捷的实现方式,综合使用Excel的各种技能,才是最高境界。