【第1セクション】
マイクロソフトExcelで自動フィルターを活用しよう!
もし、Excelで大量のデータを扱っている場合には、そのデータを効率よく整理する必要があります。そのような場合に便利なのが、自動フィルターです。自動フィルターを使えば、データの範囲を簡単に制限でき、必要なデータのみを視覚的に把握することができます。そこで、この記事では、自動フィルターを利用したデータ整理方法を解説します。
【第2セクション】
使用方法
ステップ1:新規マクロの作成
まずは、Ctrl + Shift + Aキーを押して、新規マクロを作成します。マクロ名は、適宜つけてください。
ステップ2:自動フィルターの実行
VBAで自動フィルターを実行するためには、以下のコードをマクロに追加します。
ActiveSheet.ListObjects(“テーブル名”).Range.AutoFilter Field:=[フィルターをかける列番号], Criteria1:=[フィルターの条件]
上記の「テーブル名」の部分は、対象のデータのテーブル名に置き換えます。フィルターをかける列番号は、自動フィルターの対象とする列の番号に置き換えます。そして、フィルターの条件は、必要に応じて変更してください。
ステップ3:マクロの実行
マクロを実行すると、自動フィルターが実行され、条件に合うデータにフィルタリングされます。
【第3セクション】
使用例
使用例1:月別の売上合計を出す
想定するセールスレポートのテーブルは、以下の通りです。
日付 | 商品名 | 売上金額
— | — | —
1月1日 | 商品A | 1000円
1月1日 | 商品B | 2000円
1月2日 | 商品A | 1500円
1月2日 | 商品B | 2500円
… | … | …
この場合、まずは自動フィルターを使用し、「日付」の列をフィルタリングし、対象期間のデータのみを表示します。そして、VBAを用いて、「売上金額」の列を集計します。以下がそのコードです。
Sub SalesTotalByMonth()
Dim tbl As ListObject: Set tbl = ActiveSheet.ListObjects(“SalesReport”)
Dim salesTbl As ListObject: Set salesTbl = tbl.ListColumns(“売上金額”).DataBodyRange
Dim i As Long
Dim dict As Object: Set dict = CreateObject(“Scripting.Dictionary”)
For i = 1 To salesTbl.Rows.Count
Dim dateStr As String: dateStr = tbl.DataBodyRange.Cells(i, 1).Value
Dim price As Long: price = salesTbl.Cells(i, 1)
Dim monthStr As String: monthStr = Format(CDate(dateStr), “yyyy/mm”)
If Not dict.Exists(monthStr) Then
dict.Add monthStr, price
Else
dict(monthStr) = dict(monthStr) + price
End If
Next i
Dim key As Variant
Dim r As Long: r = tbl.ListRows.Add.Range.Row
For Each key In dict.Keys()
tbl.ListRows.Add
tbl.Range.Cells(r, 1).Value = key
tbl.Range.Cells(r, 2).Value = dict(key)
r = r + 1
Next key
End Sub
このコードを実行すると、以下のような結果が出力されます。
日付 | 売上金額
— | —
2022/01 | 7000円
このように、自動フィルターとVBAを効果的に使えば、膨大な量のデータを効率的かつ簡単に集計することができます。
【第4セクション】
まとめ
Excelを使って大量のデータを操作する場合、自動フィルターを使用すれば必要なデータだけを視覚的に把握することができます。さらに、VBAを使って自動フィルターを組み合わせれば、のため、素早く正確なデータ集計が可能になります。自動フィルターとVBAを活用して、データの整理を効率的かつ確実に行いましょう。