2017-08-14 26 views
2

多次元配列をとり、範囲に配置しようとしています。しかし、範囲はスプリット(非連続)の範囲であり、私は.Cellsではなく、標準.Range("A1")を使用できるようにする必要があります。私の下のコードは多少は機能しますが、Unionの各範囲の配列の最初の2つのインスタンスにのみ配置されます。Excel VBA - 不連続な範囲への多次元配列(セルの集合を使用して作成)

以下を参照してください:

Dim TestArray(1 To 2, 1 To 3) As Integer 
TestArray(1, 1) = 1 
TestArray(2, 1) = 2 
TestArray(1, 2) = 3 
TestArray(2, 2) = 4 
TestArray(1, 3) = 5 
TestArray(2, 3) = 6 

Union(Range(Cells(78, 1), Cells(79, 1)), Range(Cells(78, 4), Cells(79, 4)), _ 
     Range(Cells(78, 6), Cells(79, 6))).Value = TestArray 

次のように私の結果は次のとおりです。

A78=1  
A79=2  
D78=1  
D79=2  
F78=1  
F79=2 

私のような私の結果たい:

A78=1  
A79=2  
D78=3  
D79=4  
F78=5  
F79=6 

は、すべてのヘルプははるかに高く評価されるだろう!

+0

これはどのように汎用性が必要ですか?試したように '='を使う直接的な方法はありませんので、おそらくヘルパー関数を書く必要があります。その機能の複雑さは、** 1 **のようなものに依存します**あなたは常に範囲が行/列の正しい数を持つことを保証できます** ** 2。**配列のサイズは常に同じですか** 3。**同じ行にあるセルは常にタッチしていますか?それはあなたの例と同じくらい簡単ですが、3行を別々に割り当てると(Domenicの答えのように) – Wolfie

答えて

0

ホープ、このことができます...

Range("A78:A79").Value = Application.Index(TestArray, 0, 1) 
Range("D78:D79").Value = Application.Index(TestArray, 0, 2) 
Range("F78:F79").Value = Application.Index(TestArray, 0, 3) 

をお試しください!

関連する問題