巧⽤公式实现VBA 数组快速赋值
VBA中可以使⽤数组处理⼯作表中的数据,是个尽⼈皆知的秘密了,读取数据加载到数组中也很简单。
⼯作表中数据如下图所⽰,需要将B1:G1的内容加载到数组中。
哒哒,⼀⾏代码瞬间⽣成⼀个⼆维数组,不要问为什么是⼆维数组?为什么使⽤⽅括号?如果真的对这两点有疑问,请⾃⾏爬楼翻翻我以前的博⽂,都有详细讲解。
可是某些英明(奇葩 )的领导⾮要这样的格式,完全不知道这是为了个⽑呀!?
这个该如何弄到⼀个数组中呢,先分别读⼊数组,然后再使⽤动态数组就和合并成2x3的数组了。
有些不⽢⼼,这么简单的⼀个事情,要这么多⾏代码。千万不要忘记,我们是在⽤Excel中玩⼉VBA,Excel中强⼤的公式可以把这个简化为⼀⾏代码就能实现。
啥也别说了,直接上代码。
【代码解析】
两⾏代码都可以实现⼀次性加载到2x3数组中,实现思路是相同的,只是使⽤的公式不同。
Choose函数根据指定的索引值,从参数串中选择值。此处的参数是两个单元格区域,这样就分两次分别选中了B1:D1和E2:G2单元格区域。
⼯作表中的If函数将不⽤解释了,这⾥需要注意的是,数组{1;0}两个数字的顺序和后⾯单元格区域的顺序要正确匹配。
看似旁门左道,其实是超级敏捷的实现⽅式,综合使⽤Excel的各种技能,才是最⾼境界。Sub  Demo1()    arr = [B1:G1]End  Sub
怎么给数组赋值
1
2
3Sub  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
1
2
3
4
5
6
7
8
9Sub  Demo3()    arr = [Choose ({1;2},B1:D1,E2:G2)]    brr = [if ({1;0},B1:D1,E2:G2)]End  Sub
1
2
3
4

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。