2016-12-26 5 views
-2

私は、Excel VBAでの二つの配列があります。Excel VBAで2つの配列をループなしでマージする方法はありますか?

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

今私はmyArr3の内容が( "A1"、 "B2"、 "C3")であるので、アレイmyArr3、ダミーのコードは、myArr3 = myArr1 & myArr2である必要が。

誰も私にループ機能なしでこのステップを実装する方法を教えてもらえますか?

+1

の可能性のある重複(http://stackoverflow.com/questions/40810384/avoid-loop-over-arrays-in-vba) – GSerg

+0

大きな問題は...なぜループなしでそれをする必要があるのでしょうか? – YowE3K

+0

@ YowE3K「ループなしでtiを実行する必要があるのはなぜですか?」という理由は次のとおりです。私の意見では、ループ関数は効率が悪くなるため、直接行う方法が必要です。 – 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) 

注:ので、それらが作成されている方法、myArr1のとmyArr20 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について、コンセンサスに達しました。効率が低いです。しかし、ループ機能の効率については、私の意見では、時には効率も低いです。たとえば、配列を範囲に塗りつぶしたい場合、直接的な方法は高速です。ループを使用すると、時間がかかります。 – sniperhgy

関連する問題