【マクロVBA】行・列のコピー!1つ・複数の行・列のコピーをして形式を指定して貼り付ける方法とは

行・列操作

普段コピーよく使用する動作ですが、まとめて行・列をコピーする場面があると思います。
VBAでも同様に行・列のコピーが可能で、1つの行・列だけでなく複数の行・列もコピーをすることができます。

さらに値のみ貼り付けや数式の貼り付けなど様々な貼り付けの形式方法
も紹介していますので、コピーと合わせて活用してみてください。

応用で、複数のコピーが大変な人向けに
配列を使ったコピー方法も紹介していますので是非参考にしてみてください。
それではみていきましょう。




⬛︎構文

・単体の行・列のコピー

行:Rows(行番号).Copy
列:Columns(列番号).Copy または  Columns(“列英字”).Copy

・複数の行・列のコピー

行:Rows("開始行番号:終わり行番号").Copy
列:Columns(“開始列英字:終わり列英字”).Copy
 Range(Columns(開始列番号),Columns(終わり列番号)).Copy

⬛︎忙しい向けのコピペ用のプログラム

・行のコピー

Sub 行のコピー()
Rows(行番号を入力).Copy
End Sub

・列のコピー

Sub 列をコピーする()
Columns(列番号).Copy
End Sub

⬛︎行のコピー

まずは行のコピーから説明します。
行はエクセルのシートでは横方向のセルを指します。

・1つの行をコピーする

まずは1行のコピー方法にていきましょう。
構文は下記の通りです。

Rows(行番号).Copy

使用方法は簡単ですね。コピーしたい行番号を入力するだけで
コピーができます。

今回は5行目をコピーしてみましょう。

プログラムはこのようになります。

Sub 行のコピー()

Rows(5).Copy

End Sub

実行した結果はこちらです。

5行目が点線の枠で囲われており、コピーした事がわかりますね

・複数の行をコピーする

次は複数行をコピーする方法についてです。
例えば2行目から9行目までコピーする場合などですね。

構文は以下の通りです。
Rows(“開始行番号:終わり行番号“).Copy

こちらも単純ですね。
では見本で2行目から9行目までコピーしてみたいと思います。

開始行番号は2行目なので「2」。
終わり行番号は9行目なので「9となります。

プログラムはこのようになりました。

Sub 複数の行をコピーする()

Rows(“2:9“).Copy

End Sub

実行した結果はこちら。

2行目から9行目までコピーすることができました。

⬛︎列のコピー

今度は列のコピーを見てみましょう。
列のコピーは行と比べて「列番号」または「列の英字」で指定します。
しかし複数の列のコピーは少し工夫が必要になります。

・1つの列をコピーする

ではまず、1列のコピー方法を見ていきましょう。

構文はこちらです。列は2種類ありますね

・Columns(列番号).Copy
・Columns(“英字”).Copy

まずは列番号を入力する方法から紹介します。
通常の列は「英数字」で表示されていますよね。

しかし入力するのは列番号です。
列番号とは「A」は「1」、「B」は「2」などを指します。

しかし、「DA列」など数えるのは大変ですよね。
そこで簡単に列番号を求める方法を紹介します。

まず、求めたい列を選択します。
ここでは「DA列」を見本にしてみましょう。

この状態で「Ctrl」+「Shift」を押したまま「←」を押します
すると列番号が表示されます。

これで「DA列」の列番号は「105」番目ということがわかりました。
こちらを活用してコピーしてみましょう。

構文はこちらです。

Columns(列番号).Copy

では先ほども求めた列番号「105」を入力します。
プログラムはこのようになります。

Sub 列をコピーする()

Columns(105).Copy

End Sub

実行した結果はこのようになります。

「DA」列がコピーできました。

ちなみに英数字を入力してもコピーは可能です。
構文はこちらです。

Columns(“英字”).Copy

プログラムはこのようになります。

Sub 列をコピーする()

Columns(“DA“).Copy

End Sub

こちらのプログラムでもDA列をコピーすることができます。

・複数の列をコピーする

次は複数列コピーする方法を見ていきましょう。
こちらは列番号でコピーする方法列の英字でコピーする方法を紹介します。

まずは列の英字でコピーする方法を見てみましょう。
構文はこちらです。

Columns(“開始列英字:終わり列英字”).Copy

こちらはイメージしやすいと思います。
例えばB列からF列をコピーしたい場合はこのようになります。

Sub 複数列をコピーする()

Columns(“B:F“).Copy

End Sub

それでは実行してみましょう。
実行してみた結果はこちらです。

B列からF列までコピーすることができました。

もう1つの列番号で複数列コピーする方法も見てみましょう。
構文はこちらです。

Range(Columns(開始列番号),Columns(終わり列番号)).Copy

先程は英字で指定していましたがこちらは数値で入力できます。

 

なので見本の「B列からF列」をコピーしたい場合は
「B」は「2」、「F」は「6」に当てはまるので
プログラムはこのようになります。

Sub 複数列をコピーする()

Range(Columns(2), Columns(6)).Copy

End Sub

実行した結果はこちらです。

B列からF列までコピーすることができました。

⬛︎貼り付けの形式とプログラム

これまではコピーの方法についてまとめました。
そのコピーした行・列を貼り付けるのですが、値のみや書式など
様々な貼り付け方法が存在
します。

そこで各貼り付け方法を見ていきましょう。

貼り付けの表を参照してください。

貼り付け位置.PasteSpecial Paste:=貼り付け内容,Operation:=演算内容,SkipBlanks:=True Or False,Transpose:=True Or False)
※PasteSpecial以降は省略可

 

各貼り付けのオプションを下の表にまとめました。

内容No形式詳細
PastexlpasteAllすべて
xlpasteFormulas数式
xlPasteValues
xlpasteFormats書式
xlpasteCommentsコメント
xlPasteValidation入力規則
xlPasteAllUsingSourceThemeコピー元のテーマを使用してすべて貼り付け
xlPasteAllExceptBorders罫線を除くすべて
xlpasteColumnWidths列幅
xlpasteFormulasAndNumberFormats数式と数値の書式
xlPasteValuesAndNumberFormats値と数値の書式
xlPasteAllMergingConditionalFormatsすべて結合されている条件付き書式
OperationxlPasteSpecialOperationNoneしない
xlPasteSpecialOperationAdd加算
xlPasteSpecialOperationSubtract減算
xlPasteSpecialOperationMultiply乗算
xlPasteSpecialOperationDivide除算
SkipBlanksTrue空白セルを無視する
False空白セルをしない
TransposeTrue行列を入れ替える
False行列を入れ替えない

では例を見てみましょう。

数値のみ貼り付けするときは…
貼り付け位置.PasteSpecial Paste:=xlPasteValues

コメントの貼り付けと行列を入れ替えるときは…
貼り付け位置.PasteSpecial Paste:=xlpasteComments, Transpose:=True

それぞれの貼り付け方法の意味は通常の貼り付けの記事でまとめてますので、下記リンクにてご覧ください。

貼り付けの記事についてはこちらから☟

【様々な貼り付け】値の貼り付け・行と列を入れ替えて貼り付ける方法などのオプション一覧 ► 独学エクセル塾 (dokugakuexcel.com)

⬛︎公式の説明

わかりやすいように説明したため公式と使用する語句が異なりますが マイクロソフト公式の説明については下記のリンクを参照してください。☟

Copy メソッド (Visual Basic for Applications) | Microsoft Docs

⬛︎まとめ

いかがだったでしょうか。
行・列のコピーは結構使用頻度も多いと思いますので
役立つ知識だとおもいます。

コピペについてまとめた記事もありますので参考にしてください

また、今回は数値・英字でコピー範囲を指定しましたが、
変数でも対応が可能です。
そちらについても別の記事でまとめてますので参考にしてみて下さい

それでは次回の記事でお会いしましょう。

コメント