• 締切済み

EXCELのマクロでクリップボードを使わずに行列入れ替えて貼り付けのしかた

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

みんなの回答

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

参考まで Sub test() Dim a a = Application.Transpose(Range("a1:c7")) Range("a10").Resize(UBound(a, 1), UBound(a, 2)) = a End Sub

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

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

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

TRANSPOSE関数を入れ込んで値にすればどうでしょうか。 元のデータが日付の場合はシリアル値になります。 With Sheets("Sheet2").Range("A1:J2") .FormulaArray = "=TRANSPOSE('Sheet1'!A1:B10)" .Value = .Value End With

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

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

関連するQ&A