エクセルマクロを活用すると、面倒な手作業を自動化し、業務を大幅に効率化できます。ここでは、実務で役立つエクセルマクロの具体例を10個紹介します。
まずはコード無しで自動化を体験したい、という方は「マクロの記録」という機能を使ってみるのがおすすめです。
【参考記事】「マクロの記録」機能で簡単マクロ作成!プログラミングなしで自動化しよう
1. データの並び替えを自動化
手動で並び替えを行う手間を省くため、マクロで昇順・降順の並び替えを自動できるマクロの例です。
Sub SortData()
Range("A1").CurrentRegion.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes
End Sub
このコードを実行すると、社員表に対してA列(社員番号)を基準に昇順で並び替えされます。

このコードの良いところは、行が増えた場合でも対応ができるということです。

2. 重複データの削除
データの重複をワンクリックで削除できるマクロです。
Sub RemoveDuplicates()
Range("A1").CurrentRegion.RemoveDuplicates Columns:=1, Header:=xlYes
End Sub
例えば下記のように社員番号が重複した表がある場合、このマクロを実行すれば重複を削除した表にすることができます。

3. 指定したセル範囲の値をクリア
特定の範囲のデータを簡単に削除できるマクロです。
Sub ClearRange()
Range("A2:D100").ClearContents
End Sub
このマクロを実行すると、指定した範囲のデータを削除することができます。

「Range("")」のカッコの中の部分で範囲を指定しています。「Range("A2:D100")」ならA2セルからD100セルの範囲を示します。E列も削除したい場合は、下記のようにコードを変更します。
Sub ClearRange()
Range("A2:E100").ClearContents
End Sub
これでE列も含めて削除することができます。

4. シートを自動でコピー
元のフォーマットを保持したまま、新しいシートを作成するマクロです。
Sub CopySheet()
ActiveSheet.Copy After:=Sheets(Sheets.Count)
End Sub
例えば、下記のような「Sheet1」というシートを表示させた状態でこのマクロを実行すると「Sheet1(2)」というコピーのシートができます。


ボタンにして登録しておくと、便利ですね。

5. 指定した条件でデータを抽出
指定した条件に合致するデータのみを抽出して表示するマクロです。
Sub FilterData()
Range("A1").CurrentRegion.AutoFilter Field:=3, Criteria1:="営業"
End Sub

上記表に対してこのマクロを実行すると、部署のところを「営業」でフィルターしてくれます。

これも、フィルターしたい項目をボタンにしておくと便利ですね。

6. ピボットテーブルを自動作成
データ範囲からピボットテーブルを作成し、指定のフィールドを設定するマクロです。
Sub CreatePivotTable()
Dim ws As Worksheet
Dim pt As PivotTable
Dim pc As PivotCache
Dim wsData As Worksheet
Dim lastRow As Long, lastCol As Long
' データがあるシートを指定(例:Sheet1)
Set wsData = ThisWorkbook.Sheets("Sheet1")
' データ範囲を取得(最後の行・列を明示的に取得)
lastRow = wsData.Cells(wsData.Rows.Count, "A").End(xlUp).Row
lastCol = wsData.Cells(1, wsData.Columns.Count).End(xlToLeft).Column
' すでに存在する場合は削除
On Error Resume Next
Application.DisplayAlerts = False
ThisWorkbook.Sheets("ピボット結果").Delete
Application.DisplayAlerts = True
On Error GoTo 0
' 画面更新と自動計算を無効化
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
' 新しいシートを追加
Set ws = ThisWorkbook.Sheets.Add
ws.Name = "ピボット結果"
' ピボットキャッシュを作成(範囲を明示的に指定)
Set pc = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
SourceData:=wsData.Name & "!" & wsData.Range(wsData.Cells(1, 1), wsData.Cells(lastRow, lastCol)).Address)
' ピボットテーブルを新しいシートに作成(名前を一意に)
Set pt = pc.CreatePivotTable(TableDestination:=ws.Range("A1"), TableName:="PivotTable" & Format(Now, "hhmmss"))
' ピボットテーブルのレイアウトを設定
On Error Resume Next
With pt
If .PivotFields("社員ID") Is Nothing = False Then
.PivotFields("社員ID").Orientation = xlRowField
End If
If .PivotFields("給与") Is Nothing = False Then
.PivotFields("給与").Orientation = xlDataField
.PivotFields("給与").Function = xlSum
End If
End With
On Error GoTo 0
' 画面更新と自動計算を再開
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
所々エラー処理を入れているので、見た目が少し複雑になっていますが、ただピボットテーブルの作成までの手順をコードにしているだけです。このマクロを実行すると、下記の表から自動的にピボットテーブルを作成することができます。

マクロを実行すると、「ピボット結果」という新しいシートが作成されるようになっています。

7. セルの色を自動変更
数値の条件に応じてセルの色を変更するマクロです。
Sub 色変更マクロ()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
' 対象のシートを指定
Set ws = ThisWorkbook.Sheets("売上")
' 最下行を取得(A列にデータがある場合)
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' 最下行までループして条件に応じて色を変更
For i = 2 To lastRow
If ws.Cells(i, 2).Value >= 10000 Then
ws.Cells(i, 2).Interior.Color = RGB(144, 238, 144) ' 緑 (LightGreen)
ElseIf ws.Cells(i, 2).Value < 5000 Then
ws.Cells(i, 2).Interior.Color = RGB(255, 182, 193) ' 赤 (LightPink)
Else
ws.Cells(i, 2).Interior.ColorIndex = xlNone ' 色なし
End If
Next i
End Sub
売上金額により背景の色が変わるようになっており、10000より大きい数値は緑、5000より小さい数値は赤、それ以外は色なしというようにしています。

8. 保存時にバックアップを自動作成
エクセルファイルのバックアップを自動作成するマクロです。
Sub SaveBackup()
Dim backupPath As String
backupPath = "C:\Backup\" & Format(Now, "yyyymmdd_HHMM") & "_backup.xlsx"
ThisWorkbook.SaveCopyAs Filename:=backupPath
End Sub
誤ってファイルを更新したことを想定し、細めにバックアップをとりたいときなどに有効です。
とはいえいちいちこのマクロを手動で実行するのは手間なので、例えばWorkbook_Open()というマクロと組み合わせると、エクセルを開いたときに必ずバックアップが作成されるというような使い方ができます。


まとめ
エクセルマクロを活用すれば、手作業で行っていた業務を効率化し、大幅な時間削減が可能になります。今回紹介したマクロの事例を参考に、自分の業務に合わせたカスタマイズを試してみてください!