| 
    
     |  | こんにちは。かみちゃん です。 
 >現在使用しているマクロでは下のようなにある特定の行を行列変換させているのですが、回数がもの凄く多いので、処理に時間がかかってしまいます。そこで、これをB1〜B5までのデータを行列変換を使わずに、変数に収めてから違うシートに値としていれようと考えています。
 >この場合、行数が100行ほどあるので、変数は100個も宣言しなければならないのでしょうか?また、この方法は実際にコピーをしてから行列変換をするより早くなるのでしょうか?
 
 したいことがわかりづらいのですが、
 以下のようなことでしょうか?
 
 【Sheet1】
 A B C D
 1 A1 B1 C1
 2 A2 B2 C2
 3 A3 B3 C3
 4 A4 B4 C4
 5 A5 B5 C5
 6
 
 ↓
 
 【Sheet2】
 A B C D E F
 1 A1 A2 A3 A4 A5
 2 B1 B2 B3 B4 B5
 3 C1 C2 C3 C4 C5
 4
 
 それであれば、以下のようなコードでできます。
 ポイントは、配列変数に取り込んで、Transpose関数で行列変換していることです。
 
 Sub Sample()
 Dim vntData As Variant
 
 '配列変数に格納
 vntData = Sheets("Sheet1").Range("A1:C5").Value
 MsgBox "vntData(1,1)の値は " & vntData(1, 1)
 '行列変換
 Sheets("Sheet2").Range("A1").Resize(UBound(vntData, 2), UBound(vntData, 1)).Value = _
 WorksheetFunction.Transpose(vntData)
 End Sub
 
 
 |  |