はじめに
Excelを使った日々の業務には、繰り返しの作業がたくさんあります。
「同じコピー&ペーストを毎日している」
「フォーマットを整えるのに時間がかかる」
「集計やレポート作成が単調でつらい」
こうした業務は、Excel VBA(Visual Basic for Applications) を使えば自動化できます。最初は難しそうに感じるかもしれませんが、実は数行のコードで効果抜群の自動化が可能です。
この記事では、初心者でもすぐに試せる 自動化マクロ3選 を紹介します。業務効率を一気に高めるきっかけにしてください。
マクロ1:シート内の不要な空白行を削除する
コード例
Sub DeleteEmptyRows()
Dim i As Long
For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If WorksheetFunction.CountA(Rows(i)) = 0 Then
Rows(i).Delete
End If
Next i
End Sub
解説
- ワークシートの1行目から最終行までチェック
- 完全に空白の行を見つけたら削除
実務での効果
アンケートデータやインポートしたCSVにありがちな「空白行」を一瞬で整理できます。
マクロ2:複数シートのデータを1枚に集約する
コード例
Sub MergeSheets()
Dim ws As Worksheet
Dim wsMaster As Worksheet
Dim rng As Range
Dim lastRow As Long
Dim pasteRow As Long
Set wsMaster = ThisWorkbook.Sheets("集計シート")
pasteRow = 1
For Each ws In ThisWorkbook.Sheets
If ws.Name <> wsMaster.Name Then
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Set rng = ws.Range("A1:A" & lastRow)
rng.Copy wsMaster.Cells(pasteRow, 1)
pasteRow = wsMaster.Cells(wsMaster.Rows.Count, 1).End(xlUp).Row + 1
End If
Next ws
End Sub
解説
- 複数のシートをループ処理
- 各シートのデータを「集計シート」に順次コピー
実務での効果
営業所ごとの売上データや部門別の報告書を、1枚のシートにまとめて集計する作業を自動化できます。
マクロ3:毎日のレポートを自動で保存する
コード例
Sub SaveDailyReport()
Dim filePath As String
Dim todayDate As String
todayDate = Format(Date, "yyyymmdd")
filePath = "C:\Reports\Report_" & todayDate & ".xlsx"
ThisWorkbook.SaveCopyAs filePath
MsgBox "本日のレポートを保存しました: " & filePath
End Sub
解説
- 実行すると「今日の日付入りファイル」を自動で保存
- 保存先フォルダとファイル名を自動生成
実務での効果
日報やバックアップを毎日保存する作業を自動化できます。ファイル名の付け間違いもなくなり、管理が楽になります。
実務での活用の広がり
今回紹介した3つのマクロは、ほんの入口にすぎません。
- フォーマット調整(列幅や罫線を一括設定)
- メール送信(Outlookと連携して自動送信)
- Webデータの取得(株価や為替を自動で取り込み)
など、VBAを使えば「面倒な手作業の多く」を自動化できます。
最初はサンプルコードをコピーして試し、少しずつ自分の業務に合わせてカスタマイズしていくのがおすすめです。
まとめ
- Excel VBAを使えば、毎日の単調作業を一気に効率化できる
- 今回紹介したマクロは次の3つ
- 空白行の削除
- 複数シートの集約
- 日付入りレポートの自動保存
- コードをコピーして実行するだけでも効果は絶大
VBAは最初の一歩さえ踏み出せば、日々の業務を大きく変える力を持っています。
「Excel作業が大変だな」と感じたら、まずはこの記事のマクロから試してみましょう。


コメント