Excelを使っていると、「別のシートにデータを転記する作業が多くて面倒…」と感じることはありませんか。
毎回コピー&ペーストを繰り返していると時間もかかり、入力ミスの原因にもなります。
そんな時に役立つのが「マクロ」を使った転記の自動化です。
この記事では、Excelのマクロを使って転記を効率化する方法を、初心者でもわかるように具体的な例とコード付きで解説します。
「転記マクロを作りたいけど何から始めればいいか分からない」という方にも、すぐに実践できる内容です。
マクロとは?Excel作業を自動化する便利な仕組み
Excelの「マクロ」とは、繰り返し行う操作を自動で実行できるようにする機能のことです。
たとえば、あるシートから別のシートへデータをコピーする、フォーマットを整える、集計するなどの操作を、一つのボタンで実行できます。
マクロは「VBA(Visual Basic for Applications)」というプログラミング言語で作成されます。
難しそうに感じるかもしれませんが、基本的な構文を覚えるだけで、業務を大幅に効率化できます。
たとえば、マクロを使えば次のような作業が一瞬で完了します。
- 日報シートから集計シートにデータを転記
- 受注リストから顧客別シートへ自動仕分け
- 入力フォームから登録データベースに書き込み
このように、転記マクロは日常業務の時短に大きく貢献します。
マクロを使う前に準備しておくこと
マクロを使うためには、まずExcelの「開発」タブを表示しておく必要があります。
以下の手順で設定しましょう。
- ファイル → オプション → リボンのユーザー設定を開く
- 右側のリストから「開発」にチェックを入れて「OK」をクリック
これで、リボンに「開発」タブが表示されます。
このタブから「マクロの記録」や「Visual Basic」などの機能を使えるようになります。
また、マクロを保存する際は、ファイル形式を「.xlsm(マクロ有効ブック)」にすることも忘れないようにしましょう。
基本の転記マクロを作ってみよう
まずは、最もシンプルな「シートAからシートBへデータを転記するマクロ」を作成してみましょう。
例:Sheet1からSheet2へデータを転記するマクロ
Sub SimpleCopy()
Sheets("Sheet1").Range("A1:C10").Copy
Sheets("Sheet2").Range("A1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
MsgBox "転記が完了しました!"
End Sub
このマクロは、Sheet1のA1:C10のデータをSheet2のA1セルから貼り付けるという処理です。
「値のみ」を転記するように設定しているため、数式や書式はコピーされません。
マクロを実行するには、「開発」タブから「マクロ」→「SimpleCopy」を選んで「実行」をクリックします。
これだけで自動転記が完了します。
条件を指定して転記するマクロ
次に、「条件に合うデータだけを転記」する応用例を見てみましょう。
たとえば、売上リストの中から「担当者が田中さんのデータだけ」を別シートに転記する場合です。
Sub ConditionalCopy()
Dim wsSrc As Worksheet
Dim wsDst As Worksheet
Dim i As Long, j As Long
Set wsSrc = Sheets("売上リスト")
Set wsDst = Sheets("田中担当分")
j = 1
For i = 2 To wsSrc.Cells(Rows.Count, "A").End(xlUp).Row
If wsSrc.Cells(i, "B").Value = "田中" Then
wsSrc.Rows(i).Copy
wsDst.Rows(j).PasteSpecial xlPasteValues
j = j + 1
End If
Next i
Application.CutCopyMode = False
MsgBox "田中さんのデータ転記が完了しました!"
End Sub
このコードでは、売上リストのB列にある担当者名をチェックし、「田中」という名前の行だけを転記しています。
転記先シートが自動で更新されるので、手動での仕分け作業が不要になります。
フォーム入力を転記するマクロ
さらに応用編として、「入力フォーム」からデータベースシートに自動登録するマクロを作成してみましょう。
たとえば、A1~C1に入力した内容を「データベース」シートの末尾に転記するコードです。
Sub FormToDatabase()
Dim wsForm As Worksheet
Dim wsDB As Worksheet
Dim nextRow As Long
Set wsForm = Sheets("入力フォーム")
Set wsDB = Sheets("データベース")
nextRow = wsDB.Cells(Rows.Count, "A").End(xlUp).Row + 1
wsDB.Cells(nextRow, "A").Value = wsForm.Range("A1").Value
wsDB.Cells(nextRow, "B").Value = wsForm.Range("B1").Value
wsDB.Cells(nextRow, "C").Value = wsForm.Range("C1").Value
MsgBox "登録が完了しました!"
End Sub
このマクロをボタンに登録すれば、入力フォームでデータを入力→ボタンを押すだけで自動登録できます。
日報、勤怠、注文管理など、さまざまなシーンで活用できます。
ボタンで簡単にマクロを実行する方法
マクロを実行するたびに「開発 → マクロ → 実行」と操作するのは少し面倒ですよね。
そこでおすすめなのが「ボタンにマクロを割り当てる方法」です。
- 「開発」タブ →「挿入」→「フォームコントロール」→「ボタン」を選択
- シート上にボタンを配置
- 「マクロの登録」ダイアログが出るので、作成したマクロを選択
これで、ボタンをクリックするだけで転記マクロが動くようになります。
操作ミスも防げるので、他の人に使ってもらう際にも便利です。
転記マクロを使うときの注意点
便利なマクロですが、いくつか注意点もあります。
- ファイル形式は「.xlsm」で保存すること
通常の.xlsxではマクロが保存されません。 - パスワードや個人情報の扱いに注意
自動転記の際に、機密データが他シートに流出しないよう確認が必要です。 - 絶対参照・相対参照を意識する
転記先のセルを固定したい場合は「Range(“A1”)」などを明示的に指定しましょう。 - マクロ実行前にバックアップを取る
思わぬ上書きや削除を防ぐためにも、事前にファイルをコピーしておくと安心です。
さらに効率化!複数シートへ同時転記するマクロ
最後に、少し応用的なサンプルをご紹介します。
1つのシートから、複数のシートへデータを条件分岐して転記するマクロです。
Sub MultiSheetCopy()
Dim wsSrc As Worksheet
Dim wsDst As Worksheet
Dim i As Long
Dim targetSheet As String
Set wsSrc = Sheets("売上リスト")
For i = 2 To wsSrc.Cells(Rows.Count, "A").End(xlUp).Row
targetSheet = wsSrc.Cells(i, "B").Value ' 担当者名をシート名に
On Error Resume Next
Set wsDst = Sheets(targetSheet)
If wsDst Is Nothing Then
Sheets.Add.Name = targetSheet
Set wsDst = Sheets(targetSheet)
End If
wsSrc.Rows(i).Copy
wsDst.Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial xlPasteValues
Set wsDst = Nothing
On Error GoTo 0
Next i
Application.CutCopyMode = False
MsgBox "すべてのデータ転記が完了しました!"
End Sub
このマクロは、担当者名を基に自動でシートを作成し、該当するデータを転記します。
チーム別や地域別にデータを分けたいときなどに非常に便利です。
まとめ
Excelマクロを使えば、転記作業をボタン一つで自動化でき、作業時間を大幅に短縮できます。
基本的なコピー転記から、条件付き・複数シート転記まで応用範囲は広く、日々の業務効率化に直結します。
最初は簡単なマクロから始めて、少しずつ応用していくのがおすすめです。
「人の手でやるしかない」と思っていた作業も、マクロの力で驚くほどスムーズになります。
ぜひ、この記事を参考にあなたのExcel業務を自動化してみてください。


コメント