Excel

【Excel】VBAマクロで数式をコピーして貼り付ける方法(最終行まで、相対参照、別シート、別ブックなど)【Range, Cells, Copy, PasteSpecial】

当サイトでは記事内に広告を含みます

この記事ではExcelのVBAマクロで数式をコピーして最終行まで貼り付ける方法について解説していきます。

ポイントとしてはRange関数、Cells関数、Copyメソッド、PasteSpecialメソッドを使用することです。

なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名を少々変わった名称にしております。

そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。

それでは詳しく見ていきましょう!

VBAマクロで数式をコピーして最終行まで貼り付ける方法(相対参照)【Range, Cells】

それではまず同じシートにてマクロで数式をコピー、貼り付ける(相対参照)方法について解説していきます。

相対参照を使用すると、コピー元のセル位置に依存した参照を行うことができます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub SoujiHyouji()
    ' 最終行を取得
    Dim SaishuuGyou As Long
    SaishuuGyou = Sheets("Sheet1").Cells(Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row

    ' B列の2行目にある数式をコピー
    Sheets("Sheet1").Range("B2").Copy

    ' 3行目から最終行までのB列に数式を貼り付け
    Sheets("Sheet1").Range("B3:B" & SaishuuGyou).PasteSpecial Paste:=xlPasteFormulas

    ' クリップボードをクリア
    Application.CutCopyMode = False
End Sub

コードのAlt+F8を押し、マクロ選択画面でSoujiHyouji関数を実行します。

このコードは、B列の2行目にある数式をコピーして、3行目から最終行までのB列に数式を貼り付けるものです。

最終行はA列のデータに基づいて算出されています。

 

VBAマクロで数式をコピーして最終行まで貼り付ける方法(別シート)【Range, Sheets】

続いては、別シートに数式をコピーする操作について解説していきます。

この方法では、異なるシート間での数式のコピーと貼り付けを行います。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub BetsuSheet()
    ' 最終行を取得
    Dim SaishuuGyou As Long
    SaishuuGyou = Sheets("Sheet1").Cells(Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row

    ' Sheet1のB2の数式をコピー
    Sheets("Sheet1").Range("B2").Copy

    ' Sheet2のB列に数式を貼り付け
    Sheets("Sheet2").Range("B2:B" & SaishuuGyou).PasteSpecial Paste:=xlPasteFormulas

    ' クリップボードをクリア
    Application.CutCopyMode = False
End Sub

コードのAlt+F8を押し、マクロ選択画面でBetsuSheet関数を実行します。

このコードはSheet1のB2セルの数式をコピーして、Sheet2のB列に同じ数式を貼り付けるものです。

最終行はSheet1のA列のデータを基に算出しています。

 

VBAマクロで数式をコピーして最終行まで貼り付ける方法(別ブック)【Workbooks, Sheets】

続いては、別ブックでの操作について解説していきます。

この方法では、異なるブック間での数式のコピーと貼り付けを行います。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub BetsuBook()
    ' 最終行を取得
    Dim SaishuuGyou As Long
    SaishuuGyou = ThisWorkbook.Sheets("Sheet1").Cells(ThisWorkbook.Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row

    ' 現在のブックのSheet1のB2の数式をコピー
    ThisWorkbook.Sheets("Sheet1").Range("B2").Copy

    ' 新しいブックを開く
    Workbooks.Add

    ' 新しいブックのSheet1のB列に数式を貼り付け
    ActiveSheet.Range("B2:B" & SaishuuGyou).PasteSpecial Paste:=xlPasteFormulas

    ' クリップボードをクリア
    Application.CutCopyMode = False
End Sub

コードのAlt+F8を押し、マクロ選択画面でBetsuBook関数を実行します。

このコードは、現在開いているブックのSheet1から数式をコピーして、新しく作成したブックのSheet1にそれを貼り付けるものです。

新しいブックは`Workbooks.Add`で追加され、最終行は元のブックのSheet1のA列のデータに基づいて算出されています。

まとめ

これでVBAマクロを利用して、数式をコピーして最終行まで貼り付ける方法を相対参照、別シート、そして別ブックという3つの異なるシーンで学ぶことができました。

変数名を意味のあるものに変更することで、さらにコードの可読性が上がり、あなた自身のプロジェクトで役立てることが可能となります。

この記事で解説したRange関数やCells関数、Copyメソッド、PasteSpecialメソッドなどの基本的な関数やメソッドの使い方を理解することで、Excel VBAの基本を学ぶ大切な第一歩となります。

さらに深い理解のためには、各関数の公式ドキュメントを参照して詳細を学ぶことをお勧めします。

この記事がExcel VBAの学習の一助となれば幸いです。

これからもVBAマクロでの作業効率化を目指し、さまざまなテクニックを学んでいきましょう!