「vba 貼り付け 行列入れ替え」
といった検索キーワードでのアクセスが時折あります。
[形式を選択して貼り付け]ダイアログで[行/列の入れ替え]をOnにした状態での貼り付けを、VBAで行うには、
どのようなコードを書けばいいのか探していた方による検索です。
行/列の入れ替え貼り付けするサンプルマクロ
以下のSubプロシージャが参考になるでしょう。Range("A1:A5").Copy
Range("D1").PasteSpecial Transpose:=True
End Sub
A1:A5セルに入力されていた縦方向に並んだデータが、D1セルを起点として横方向D1:H1セルに貼り付けられます。
マクロ記録でできるコードを参考に
拙著『いちばんやさしいExcel VBAの教本』のChapter 9「マクロ記録を活用しよう」で、マクロ記録機能の現実的な使いかたをご紹介しています。
先の、
Range("A1:A5").Copy
Range("D1").PasteSpecial Transpose:=True
も、マクロ記録で作られるコードを整理して書けます。
A1:A5セルを選択 → コピー → D1セルの選択 → [形式を選択して貼り付け]ダイアログで[行/列の入れ替え]をOnにした状態での貼り付け、といった一連の操作をマクロ記録すると、以下のようなコードが作られます。
Range("A1:A5").Select
Selection.Copy
Range("D1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
行継続文字の削除
拙著のLesson 57 "マクロ記録で使われる「行継続文字」について学習しましょう"でも解説しているとおり、「 _」(半角スペースとアンダーバー)は、物理的に複数行にしているだけですので、マクロ記録で作られた「Selection.PasteSpecial...」の行と次の「False, Transpose:=True」の行は実際には1つの文です。
SelectとSelectionの整理
Lesson 55 "マクロ記録で使われる「Select」と「Selection」について学習しましょう"でお伝えしている、
Select・Selectionの書き直しを行うと、マクロ記録で作られたコードは、
Range("A1:A5").Copy
Range("D1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
の2行にまとめられます。
Range.PasteSpecialメソッドの引数
今回は行と列の入れ替えだけを行いたいので、
Range("D1").PasteSpecial Paste:=xlPasteAll,......
から、引数Paste・Operataion・SkipBlanksを削除して、Transpose:=Trueだけを残して、
Range("D1").PasteSpecial Transpose:=True
ご紹介したSubプロシージャを作れます。
Home » エクセルマクロ・Excel VBAの使い方 » VBAで行/列の入れ替えを行って貼り付ける