Excel VBAを使った業務効率化:外れ値フィルタリングの自動化

この記事では、Excel VBA(Visual Basic for Applications)を用いて外れ値を自動的にフィルタリングする方法について解説します。特に業務データの分析において、外れ値はしばしば問題を引き起こすことがあります。しかし、手動でのフィルタリングは非効率的かつミスの元です。この記事は、そのような問題を効率的に解決する方法として、VBAを活用した外れ値のフィルタリングについて具体的なコードとその詳細な解説、さらに応用例を3つ以上紹介します。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

なぜ外れ値フィルタリングが必要か

外れ値はデータ分析において重要な問題点です。たとえば、売上データや在庫データ、顧客の行動データなど、業務で扱う各種データに外れ値が存在すると、平均値や分散、さらには推論結果まで誤る可能性があります。

VBAによる外れ値の基本的なフィルタリング

VBAを用いると、外れ値のフィルタリングが効率的に行えます。以下に基本的なコードを示します。


Sub FilterOutliers()
    Dim LastRow As Long
    Dim i As Long
    Dim DataRange As Range
    Dim CellValue As Double
    
    ' 最後の行を取得
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    ' データ範囲を設定
    Set DataRange = Range("A1:A" & LastRow)
    
    ' 外れ値をフィルタリング
    For i = 1 To LastRow
        CellValue = Cells(i, 1).Value
        ' ここでは、外れ値を100より大きい値としています。
        If CellValue > 100 Then
            Cells(i, 1).EntireRow.Hidden = True
        End If
    Next i
    
End Sub

コードの解説

– `Dim LastRow As Long` : 最後の行番号を格納する変数を定義します。
– `Dim i As Long` : ループカウンタ用の変数を定義します。
– `Dim DataRange As Range` : データ範囲を格納する変数を定義します。
– `Dim CellValue As Double` : セルの値を格納する変数を定義します。

応用例

以下は、この基本的なコードを応用した3つの例です。

応用例1:異なる列にフィルタを適用


' 異なる列(B列)にフィルタを適用する例
Sub FilterOutliersInColumnB()
    Dim LastRow As Long
    Dim i As Long
    Dim CellValue As Double
    
    LastRow = Cells(Rows.Count, 2).End(xlUp).Row
    
    For i = 1 To LastRow
        CellValue = Cells(i, 2).Value
        If CellValue > 100 Then
            Cells(i, 2).EntireRow.Hidden = True
        End If
    Next i
    
End Sub

応用例2:複数の条件でフィルタ


' 複数の条件(100より大きい、または0より小さい)でフィルタする例
Sub FilterOutliersWithMultipleConditions()
    Dim LastRow As Long
    Dim i As Long
    Dim CellValue As Double
    
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 1 To LastRow
        CellValue = Cells(i, 1).Value
        If CellValue > 100 Or CellValue < 0 Then
            Cells(i, 1).EntireRow.Hidden = True
        End If
    Next i
    
End Sub

応用例3:外れ値を別シートにコピー


' 外れ値を別のシート(Sheet2)にコピーする例
Sub CopyOutliersToAnotherSheet()
    Dim LastRow As Long
    Dim i As Long
    Dim CellValue As Double
    Dim TargetRow As Long
    
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    TargetRow = 1
    
    For i = 1 To LastRow
        CellValue = Cells(i, 1).Value
        If CellValue > 100 Then
            Sheets("Sheet2").Cells(TargetRow, 1).Value = CellValue
            TargetRow = TargetRow + 1
        End If
    Next i
    
End Sub

まとめ

Excel VBAを用いることで、外れ値のフィルタリングを効率的に行えます。基本的なコード例から、さまざまな応用例まで紹介しました。この記事が、業務効率化に

貢献する一助となれば幸いです。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次