Home » エクセルマクロ・Excel VBAの使い方 » VBAで行/列の入れ替えを行って貼り付ける

動作検証バージョン:Windows版Excel(バージョン1903 ビルド11425.20204)

「vba 貼り付け 行列入れ替え」
といった検索キーワードでのアクセスが時折あります。

[形式を選択して貼り付け]ダイアログで[行/列の入れ替え]をOnにした状態での貼り付けを、VBAで行うには、

VBAで行/列の入れ替えを行って貼り付けるには

どのようなコードを書けばいいのか探していた方による検索です。

[スポンサードリンク]

行/列の入れ替え貼り付けするサンプルマクロ

以下のSubプロシージャが参考になるでしょう。
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」について学習しましょう"でお伝えしている、

VBAで行/列の入れ替えを行って貼り付けるには

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で行/列の入れ替えを行って貼り付ける

「エクセルマクロ・Excel VBAの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.