エクセルを使ってデータを集計・整理する際に効率的な方法の1つとして「別シートに自動反映させるマクロ」を組めば、手作業を減らし、作業効率を劇的に向上させることができます。
この記事では、エクセルマクロを使用して、異なるシート間でデータを自動的に反映させる方法を詳しく解説します。
エクセルで別シートにデータを自動反映する
1.「別シートに自動反映する」とは?
まず、別シート間でデータを自動反映させるのはどのような場面でしょうか?
ビジネスシーンでは、複数のシートにまたがるデータを効率よく管理・集計することが求められることが多々あります。
例えば、次のようなケースです。
- 「売上データを集計シートに自動反映させたい」
- 「入力されたデータを別のシートにまとめて表示したい」
- 「データの入力が完了したら別シートに転記して次の処理に進みたい」

このような作業を手動で行うと時間がかかり、ミスも増えてしまいます。そこでマクロを使えば、データの自動転送や集計を簡単に行えるため、作業時間の短縮と精度向上が期待できます。
2. エクセルマクロについて
エクセルのマクロは、VBA(Visual Basic for Applications)というプログラミング言語を使用して、エクセル内で繰り返し行う作業を自動化する機能です。マクロを使うことで、数十行の工程を1クリックで完了させる、なんてことも可能になります。
特に、複数のシートを操作する際にマクロを利用すると、次のようなメリットがあります。
- シート間でデータを正確に転送できる
- 手作業によるミスを減らせる
- 定期的なデータ集計やレポート作成の効率化
- 作業時間を大幅に短縮できる
例えば私も以前、ある表から別の表に転記を繰り返すという作業をマクロ化したことで、数時間の作業を10分に短縮したことがあります。

このように、エクセルマクロは業務を圧倒的に効率化するための強力なツールになります。
3. エクセル転記マクロの作成例
次に、具体的に別シートにデータを自動反映させるマクロの作成方法を見ていきましょう。今回は簡単な例として、「Sheet1」のデータを「Sheet2」に転記するマクロを作成する手順です。
Step1: 開発タブの表示
VBAコードを作成するには、まずエクセルの「開発」タブが表示されているかどうか確認しましょう。

表示されていない場合、下記の手順で「開発」タブを出現させましょう。
- 「ファイル」メニューをクリック
- 「オプション」を選択
- 「リボンのユーザー設定」から「開発」にチェックを入れ、OKをクリック
画像で確認しながら進めたい方は、下記の記事で詳しく解説しています。
Step2: VBAエディタを開き、コード記述の準備をする
「開発」タブの中にある「Visual Basic」というアイコンをクリックしてVBAエディタを開きましょう。

下記のような画面が出るので、「ThisWorkbook」の部分をダブルクリックしましょう、

そうすると、右側にコードを入力できる白い枠が出ますので、そこにVBAのコードを入力します。

Step3: VBAコードの作成
今回のコードは、「Sheet1」のA1~A10セルの値を「Sheet2」のA1~A10セルに転記するマクロのため、コードを作成する前に下記の準備をしておきましょう。
- 「Sheet1」、「Sheet2」が存在していることを確認する。
→「Sheet1」、「Sheet2」が無ければエラーになってしまいますので、2つのシートが存在するようにしておきましょう。

- 「Sheeet1」のA1~A10セルに任意の値を入力しておく
→どんな値でも良いので、「Sheet1」のA1~A10セルに何か値を入れておきましょう。

準備ができたら、今回は、以下のコードを入力します。このコードは、「Sheet1」のセルA1からA10までのデータを「Sheet2」の同じ位置にコピーするマクロです。
Sub CopyDataToAnotherSheet()
Dim SourceSheet As Worksheet
Dim TargetSheet As Worksheet
Dim LastRow As Long
' シートの設定
Set SourceSheet = ThisWorkbook.Sheets("Sheet1")
Set TargetSheet = ThisWorkbook.Sheets("Sheet2")
' シート1のA1からA10までのデータをシート2にコピー
SourceSheet.Range("A1:A10").Copy Destination:=TargetSheet.Range("A1")
' コピーしたデータを貼り付け後、コピー元をクリア
SourceSheet.Range("A1:A10").ClearContents
End Sub
先ほどコードを記載すると説明した箇所に、上記コードを作成します(貼り付けでもOK)

Step4: マクロの実行
コードを入力後、上部にある実行ボタン(緑の三角マーク)をクリックしてマクロを実行しましょう。

実行すると、「Sheet1」のA1~A10セルに入っていた値が「Sheet2」に転記されているはずです。

4. マクロをより便利に使うための応用例
今回作成した基本的なマクロを、さらに便利にする応用例もご紹介します。
自動反映のトリガー設定
自動反映を手動で行うのではなく、特定の条件(例えば、セルにデータが入力された時)でマクロを実行させることができます。以下のコードは、Sheet1のA1~A10セルにデータが入力された際に、Sheet2に自動的に反映させる例です。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A1:A10")) Is Nothing Then
Sheets("Sheet2").Range("A1:A10").Value = Sheets("Sheet1").Range("A1:A10").Value
End If
End Sub
このコードをSheet1に設定すると、A1からA10の範囲でデータが変更されるたびに、シート2にも自動的に反映されます。

※少し応用的な細かい話になりますが、このような特定の条件で動くマクロは「Module1」ではなくシートモジュールにコードを記述する必要があります。(今回の場合は「Sheet1」モジュールに記述)

5. 自動反映マクロを使う際の注意点
今回のものに限りませんが、マクロを使用する際にはいくつかの注意点があります。下記のような点に注意しましょう。
- セキュリティ設定: マクロを使用するには、エクセルのマクロのセキュリティ設定を確認し、マクロを有効にする必要があります。セキュリティ設定が高いと、マクロが実行できないことがあります。
【関連記事】エクセルマクロを有効にする方法&有効にならないときの対策
- バックアップを取る: マクロを実行する前に、データのバックアップをとっておいた方が良いです。マクロは実行後に「元に戻す」の操作でキャンセルすることができないので、特に大量のデータを操作する場合、予期しないエラーが発生することもあるため事前に安全策としてバックアップしておくと安心です。
- データの整合性: 複数のシート間でデータを反映させる場合、シート間できちんと狙いの場所にデータが転送されているかチェックが必要です。誤った範囲にデータを転送しないよう、細心の注意を払いましょう。
6. まとめ
エクセルマクロを使って、別シートに自動的にデータを反映させる方法について紹介しました。このようなマクロを使えば、手動データを転記するより圧倒的に速いので、作業時間の短縮になります。特に、データ量が多くなればなるほど強力な武器になります。
まずは小さな、基本的なマクロから試してみて、自分の業務に合った自動化を進めていきましょう。