• ベストアンサー

Excel VBAで列を行に変換するには

不特定多数の行数(百列以上)と列数(千列以上)を持ったデータを以下にある結果1を結果2のように列と行を置換したいのですがどうしたらよろしいでしょうか? もしよろしければ、プログラムを教えていただけたら助かります。 よろしくお願いします。 ///////////結果1//////////////////// A1 B1 C1 →不特定の列数 A2 B2 C2 A3 B3 C3 ↓ 不特定の行数 ///////////結果2/////////////////// A2 A2 A3 B1 B2 B3 C1 C2 C3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

プログラムを使わなくても「範囲のコピー」「形式を選択して貼り付け」で、[行列を入れ替える]チェックをOnというのがありますが。

yousukei
質問者

お礼

お返事ありがとうございます。すいませんが今回はVBAで自動でやるのが目的ですので、プログラムで書きたいと思っています。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

マクロの記録でできると思いますが、コメント付きコードは以下のとおり。 Ctrl+Endで、不特定であっても行・列共に最大値(最終)セルを選択できます。 Ctrl+Shift+Endで、最大値(最終)セル「まで」を選択できます。 現在のデータがSheet1にあるとして、行列置換後のデータをSheet2に置くとします。 'コピー元を選択する Sheets("Sheet1").Select Range("A1").Select Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select 'クリップボードへコピーする Selection.Copy 'コピー先を選択する Sheets("Sheet2").Select 'クリップボードからコピー(ペースト)する   ’Transpose:=Trueがミソ。形式を選択して貼り付けの行列入れ替え Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

yousukei
質問者

お礼

お返事ありがとうございます。’Transpose:=Trueですね! 確かにこれなら、1セルずつを置き換えさすプログラムよりも短かく、短時間の処理でできますね。 参考になります。

すると、全ての回答が全文表示されます。

関連するQ&A