0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Excel VBAを使って別シートの値をコピペする方法

Last updated at Posted at 2024-07-07

Excel VBAを使って特定の範囲の値を別の範囲に貼り付ける方法

ExcelのVBA(Visual Basic for Applications)を利用すると、特定の条件やイベントに応じて自動的に操作を行うことができます。例えば、特定のシートがアクティブになった際に、別のシートのデータを自動的にコピーして貼り付けたい場合などに役立ちます。ここでは、特定の範囲の値を別の範囲に貼り付ける方法を解説します。

具体例

Sheet2の性別と飲み物の表(混同行列のような表)のみを、Sheet1に反映する。
Sheet2に修正が入った場合、自動でSheet1にも反映される資料を作る。

image.png
image.png

手順

  1. Excelファイルを開く

    Excelを開き、新しいブックを作成します。または既存のブックを開いてください。

  2. VBAエディタを開く

    ExcelのVBAエディタを開くために、Alt + F11 キーを押します。これにより、VBAプロジェクトが表示されます。
    Alt + fn + F11の場合もあります。
    image.png

  3. 新しいマクロを作成

    VBAエディタで、左側のプロジェクトエクスプローラから、操作したいExcelファイル(例: Book1.xlsm)を選択し、ThisWorkbookをダブルクリックします。これにより、ThisWorkbookに関連するVBAコードを記述する画面が開きます。
    image.png

  4. VBAコードの記述

    次のVBAコードをThisWorkbookに記述します。このコードは、特定のシートがアクティブになった際に、Sheet2のF3:H6の値をSheet1のB2から始まるセルに貼り付けるものです。

    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
        Dim ws1 As Worksheet
        Dim ws2 As Worksheet
        Dim sourceRange As Range
        Dim destinationCell As Range
    
        ' シート1(コピー先)とシート2(コピー元)を設定
        Set ws1 = ThisWorkbook.Sheets("Sheet1")
        Set ws2 = ThisWorkbook.Sheets("Sheet2")
    
        ' シート1(コピー先)のB2から始まるセルを設定
        Set destinationCell = ws1.Range("B2")
    
        ' シート2(コピー元)のF3:H6の範囲を設定
        Set sourceRange = ws2.Range("F3:H6")
    
        ' シート1(コピー先)の指定されたセルに値を貼り付ける(式ではなく値のみ)
        destinationCell.Resize(sourceRange.Rows.Count, sourceRange.Columns.Count).Value = sourceRange.Value
    End Sub
    

    このVBAコードは、Excelファイルがアクティブになったときに自動的に動作します。Sheet2のF3からH6の範囲で計算された値をSheet1のB2から始まるセルに貼り付けます。
    image.png

  5. 保存と実行

    VBAコードを保存するには、Ctrl + S を押して保存します。保存する際は、ファイルの種類を「Excel マクロ有効ブック (*.xlsm)」に設定します。

image.png

Excelファイルを閉じ、再度開くと、VBAコードが有効になります。Sheet2の値を更新したり、シートを切り替えると、Sheet1に値が自動的に反映されることを確認してください。

動作確認

一覧の先頭行の山田さんを「コーヒー」から「お茶」に変更する。

変更前

image.png
image.png

変更後

image.png
image.png

Sheet2の変更が、自動で、Sheet1に反映されていることが確認取れました!

おまけ

F2 キーを押すと数式の確認ができます。※画像はG4のセルを選択
F3:H6の表はB~D列の一覧を参照し、一致した件数をセットする式が書かれています。

image.png

まとめ

ExcelのVBAを使用することで、特定のイベントに応じて自動的に操作を行うことが可能です。この記事では、特定の範囲の値を別の範囲に貼り付ける方法を例示しました。是非、自分の業務やプロジェクトに応用してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?