マクロ記録でVBA
行列を入れ替えて貼り付け

Excelマクロの自動記録を使って、エクセルVBAの初心者向け入門解説
公開日:2013年5月以前 最終更新日:2013-07-02

第14回.行列を入れ替えて貼り付け


はい、今回は、「形式を選択して貼り付け」の「行列を入れ替える」をやってみましょう。


Sheet1の100マスを、Sheet2へ、行列を入れ替えて貼り付けします。


ではマクロの記録です、Sheet2を選択している状態からです。


1.マクロの記録

2.Sheet1を選択

3.A1~K11を選択

4.Sheet2を選択

5.A1セルを選択

6.形式を選択して貼り付け

7.「行列を入れ替える」にチェックし、「OK」

8.Esc・・・コピー状態の解除です。

9.記録終了


作成されたマクロは、


Sub Macro12()
'
' Macro12 Macro
'

'
  Sheets("Sheet1").Select
  Range("A1:K11").Select
  Selection.Copy
  Sheets("Sheet2").Select
  Range("A1").Select
  Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
  Application.CutCopyMode = False
End Sub


いつも通りに、消し込みをします。


Sub Macro12()
Sheets("Sheet1").Range("A1:K11").Copy
Sheets("Sheet2").Range("A1").PasteSpecial _
Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
  Application.CutCopyMode = False

End Sub


以前に値のコピーをやりましたので、同じですね。


行列の入れ替えは、

Transpose:=True
になります。


Application.CutCopyMode = False

はこれ、コピー状態(コピー元のセル範囲が点々状態)を解除しています。


マクロの記録をつかえば、何も問題はないですね。



ついでに、加算貼り付けもやってみましょう。


1.マクロの記録

2.Sheet1を選択

3.A1~K11を選択

4.Sheet2を選択

5.A1セルを選択

6.形式を選択して貼り付け

7.「値」と「加算」をチェックし、「OK」

8.Esc・・・コピー状態の解除です。

9.記録終了


作成されたマクロは、




Sub Macro13()
'
' Macro13 Macro
'

'
  Range("A1:K11").Select
  Selection.Copy
  Sheets("Sheet2").Select
  Range("A1").Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks _
    :=False, Transpose:=False
  Application.CutCopyMode = False
End Sub


消し込みをします。


Sub Macro13()
Sheets("Sheet1").Range("A1:K11").Copy
Sheets("Sheet2").Range("A1").PasteSpecial _
Paste:=xlPasteValues, Operation:=xlAdd, SkipBlanks :=False, Transpose:=False
  Application.CutCopyMode = False

End Sub


Operation:=xlAdd

これが加算になります。


Paste:=

Operation:=

SkipBlanks :=

Transpose:=

これらに指定する値によって、様々なコピーペーストが実現できます。


何を指定するかは、マクロの記録をすれば分かります。


そのまま使用すれば良いです。


あえて説明するなら、Falseの場合は、その指定そのものが不要なこと位です。


つまり、上なら、

, SkipBlanks :=False, Transpose:=False
は無くても良いです。


しかし、わざわざ消す必要もないので、そのまま使用した方がが良いです。




PasteSpecial の引数


Paste:=

xlPasteAll:すべてを貼り付けます。
xlPasteAllExceptBorders:輪郭以外のすべてを貼り付けます。
xlPasteAllMergingConditionalFormats:すべてを貼り付け、条件付き書式をマージします。
xlPasteAllUsingSourceTheme:ソースのテーマを使用してすべてを貼り付けます。
xlPasteColumnWidths:コピーした列の幅を貼り付けます。
xlPasteComments:コメントを貼り付けます。
xlPasteFormats:コピーしたソースの形式を貼り付けます。
xlPasteFormulas:数式を貼り付けます。
xlPasteFormulasAndNumberFormats:数式と数値の書式を貼り付けます。
xlPasteValidation:入力規則を貼り付けます。
xlPasteValues:値を貼り付けます。
xlPasteValuesAndNumberFormats:値と数値の書式を貼り付けます。


Operation:

xlPasteSpecialOperationAdd:コピーしたデータは、対象セルの値に追加されます。
xlPasteSpecialOperationDivide:コピーしたデータは、対象セルの値によって分割されます。
xlPasteSpecialOperationMultiply:コピーしたデータには、対象セルの値が掛けられます。
xlPasteSpecialOperationNone:貼り付け操作で計算は行われません。
xlPasteSpecialOperationSubtract:コピーしたデータは、対象セルの値が引かれます。

上記はヘルプより表示しています。

実際には、PasteSpecialOperationの部分を除いた指定も可能です。

どうも、ヘルプとマクロの記録に不整合があるようです。

SkipBlanks:=

クリップボードに含まれる空白のセルを貼り付けの対象にしないようにするには、True を指定します。

既定値は False です。


Transpose:=

貼り付けのときにデータの行と列を入れ替えるには、True を指定します。

既定値は False です。





同じテーマ「マクロの記録でVBA」の記事

第11回.イミディエイトで値の確認
第12回.セルに色を塗る
第13回.罫線を引く
第14回.行列を入れ替えて貼り付け
第15回.いろいろな消去
第16回.行の挿入・削除
第17回.並べ替え
第18回.オートフィルタ
第19回.オートフィルタ2
第20回.ジャンプのセル選択
第21回.条件付き書式


新着記事NEW ・・・新着記事一覧を見る

ハイフン区切り文字列の『最初』と『最後』を抽出・結合|エクセル練習問題(2026-02-23)
AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ