2017-07-11 3 views
1

マクロにはまだ新しいです。私は1列に300行のデータを持つ最初のワークブックにデータを持っています。他のワークブックの6列に6行のデータを転置する必要があります。 たとえば、A1:A6のデータはA1:F1に転記する必要があります。再度、A7:A14からのデータはA2:F2に転記する必要があります。Excelマクロ特殊な条件で他のワークブックにデータをコピーして転記します。

私はこのコードを持っています。データは配列内のvDBに保存されます

Dim vDB 
    vDB = rsData.getRows 
     TargetRange.Cells(1, 1).Resize(UBound(vDB, 1) + 1, UBound(vDB, 2) + 1) = vDB 

このコードでは、他のワークブックにデータをコピーして転記することができます。しかし、それは1つの列から1つの行にしか動作しません。私は6行6列ごとに行う方法を見つけることができません。 6行6列のデータを上のコードで転記する方法はありますか?私は助けに感謝します。

+0

を使用しても大丈夫ですか?....コピー.... PasteSpecial Transpose:= True'? –

+0

いいえ、私のコードでは、クローズドブックからデータをコピーするライブラリを使用していました。 –

+0

これを見てみてください。 https://stackoverflow.com/questions/13174916/transpose-a-range-in-vba – Kevin

答えて

1

GetRowsの必要はありません。レコードセットrsDataを取得した後、

Dim i As Long 
Do Until rsData.EOF 
    targetRange.Cells(1 + Int(i/6), 1 + i Mod 6).value = rsData.Fields(0).value 
    i = i + 1 
    rsData.MoveNext 
Loop 
+0

データを転記しません。データは転置する必要があります。 –

+0

@AdryanPermana * "A1:A6はA1:F1に転記する必要があります。また、A7:A14のデータはA2:F2"に転記する必要があります "*推奨コードは、レコードセット' rsData'からデータを直接記載されている。あなたのレコードセットは1つのフィールド(列)を持ち、その値を1つの列に入れるのではなく、それらを 'A1:F1'と' A2:F2'のように置きます。 –

+0

私の間違い申し訳ありません。私は何か悪いことをした。できます。ありがとう –

関連する問題