我在Excel VBA中兩個數組:如何合併Excel VBA中沒有循環的兩個數組?
myArr1 = Array("a", "b", "c")
myArr2 = Array("1", "2", "3")
現在我想的陣列myArr3
,僞代碼是myArr3 = myArr1 & myArr2
,所以myArr3的內容( 「A1」, 「B2」, 「C3」)。
任何人都可以教我如何實現這一步沒有循環功能?
我在Excel VBA中兩個數組:如何合併Excel VBA中沒有循環的兩個數組?
myArr1 = Array("a", "b", "c")
myArr2 = Array("1", "2", "3")
現在我想的陣列myArr3
,僞代碼是myArr3 = myArr1 & myArr2
,所以myArr3的內容( 「A1」, 「B2」, 「C3」)。
任何人都可以教我如何實現這一步沒有循環功能?
下面將做沒有(明確的)循環,但它不是一個好主意,做這樣的:
myArr1 = Array("a", "b", "c")
myArr2 = Array("1", "2", "3")
Range("A1:A3").Value = Application.Transpose(myArr1)
Range("B1:B3").Value = Application.Transpose(myArr2)
Range("C1:C3").FormulaR1C1 = "=RC[-2]&RC[-1]"
myArr3 = Application.Transpose(Range("C1:C3").Value)
注:因爲它們的創建方式,myArr1
和myArr2
尺寸爲0 To 2
,但myArr3
的尺寸爲1 To 3
。
一個不需要循環較爲簡單的方法是:[?避免遍歷數組在VBA]
myArr1 = Array("a", "b", "c")
myArr2 = Array("1", "2", "3")
Dim myArr3(0 To 2)
myArr3(0) = myArr1(0) & myArr2(0)
myArr3(1) = myArr1(1) & myArr2(1)
myArr3(2) = myArr1(2) & myArr2(2)
首先感謝您的回覆。關於方法1,使用輔助柱和配方,效率低。關於方法2,當我在數組中只有3個元素時,此方法是可行的,但如果數組中有100,000個元素,我是否也應該使用此方法?所以,我想要一種方法來做到這一點,就像myArr1&myArr2(EXCEL VBA不支持這個操作) – sniperhgy
@sniperhgy - 是的,方法1效率低 - 我只是建議它,因爲你在你的問題中明確指出你沒有不想使用循環等高效方法。而方法2對於大容量是不利的,但是如果你想讓代碼易於管理,循環就應該用於大容量的操作。 – YowE3K
關於方法1,我們達成了共識,效率低下。但是關於循環功能的效率,在我看來,有時效率也不高。例如:我們想要將一個數組填充到一個範圍內,直接方法會很快,如果我們使用Loop來完成,我們將花費更多時間。 – sniperhgy
的可能的複製(http://stackoverflow.com/questions/40810384/avoid-loop-over-arrays-in-vba) – GSerg
最大的問題是......爲什麼你需要在沒有循環的情況下做到這一點? – YowE3K
@ YowE3K「爲什麼我需要做無循環」的原因是:在我看來,循環功能會導致效率低下,所以我需要一種方法直接做到這一點。 – sniperhgy