プロが教えるわが家の防犯対策術!

EXCELのマクロでクリップボードを使用せずに行列の入れ替えをして貼り付け
の仕方がわかりません。
よろしくお願いいたします。

A 回答 (4件)

たとえば、A1セルからのデータを行列入れ替えて、アクティブセル以下に表示するなら、以下のようなコードを使って、For Next 構文で行数と列数分だけ値の代入を繰り返せばよいと思います。



ActiveCell.Offset(i - 1, j - 1).Value = Range("A1").Offset(j - 1, i - 1).Value
    • good
    • 0

TRANSPOSE関数を入れ込んで値にすればどうでしょうか。


元のデータが日付の場合はシリアル値になります。

With Sheets("Sheet2").Range("A1:J2")
.FormulaArray = "=TRANSPOSE('Sheet1'!A1:B10)"
.Value = .Value
End With
    • good
    • 0

copy,pasteしないでもtransposeは使えますが、これではお望みの動作にはなりませんか?と書いているうちに、#2さんの回答が出ましたが、折角書いたのでアップしておきます。

ご参考まで。
Sub test()
Dim targetRange As Range
Dim buf As Variant

Set targetRange = Sheets(1).Range("a1").CurrentRegion
buf = Application.Transpose(targetRange)
Sheets(2).Range("a1").Resize(targetRange.Columns.Count, targetRange.Rows.Count) = buf
End Sub
    • good
    • 1

参考まで



Sub test()
Dim a
a = Application.Transpose(Range("a1:c7"))
Range("a10").Resize(UBound(a, 1), UBound(a, 2)) = a
End Sub
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!