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的各種技能,纔是最高境界。