2016-12-26 109 views
-2

我在Excel VBA中兩個數組:如何合併Excel VBA中沒有循環的兩個數組?

myArr1 = Array("a", "b", "c") 
myArr2 = Array("1", "2", "3") 

現在我想的陣列myArr3,僞代碼是myArr3 = myArr1 & myArr2,所以myArr3的內容( 「A1」, 「B2」, 「C3」)。

任何人都可以教我如何實現這一步沒有循環功能?

+1

的可能的複製(http://stackoverflow.com/questions/40810384/avoid-loop-over-arrays-in-vba) – GSerg

+0

最大的問題是......爲什麼你需要在沒有循環的情況下做到這一點? – YowE3K

+0

@ YowE3K「爲什麼我需要做無循環」的原因是:在我看來,循環功能會導致效率低下,所以我需要一種方法直接做到這一點。 – sniperhgy

回答

1

下面將做沒有(明確的)循環,但它不是一個好主意,做這樣的

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) 

注:因爲它們的創建方式,myArr1myArr2尺寸爲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) 
+0

首先感謝您的回覆。關於方法1,使用輔助柱和配方,效率低。關於方法2,當我在數組中只有3個元素時,此方法是可行的,但如果數組中有100,000個元素,我是否也應該使用此方法?所以,我想要一種方法來做到這一點,就像myArr1&myArr2(EXCEL VBA不支持這個操作) – sniperhgy

+1

@sniperhgy - 是的,方法1效率低 - 我只是建議它,因爲你在你的問題中明確指出你沒有不想使用循環等高效方法。而方法2對於大容量是不利的,但是如果你想讓代碼易於管理,循環就應該用於大容量的操作。 – YowE3K

+0

關於方法1,我們達成了共識,效率低下。但是關於循環功能的效率,在我看來,有時效率也不高。例如:我們想要將一個數組填充到一個範圍內,直接方法會很快,如果我們使用Loop來完成,我們將花費更多時間。 – sniperhgy