Excel/VBA

TOP

条件に一致する行を取得する方法

条件に一致する行を取得する方法の説明画像です

上記のサンプルデータをもとに解説を行っていきます


条件に一致した行を黄色で塗りつぶしを行う

下記のサンプルコードはB列のカテゴリが『カテゴリA』の行のみを黄色で塗りつぶしを行っています。
2行目から最終行までループし、IF文で条件分岐を行います。

サンプルコード


Sub カテゴリA塗りつぶし()

    Dim i As Long, LastRow As Long
    
    'A列で最終行を取得する
    LastRow = Cells(Rows.Count, "A").End(xlUp).Row
    
    '2行目から最終行までループ
    For i = 2 To LastRow
        
        'カテゴリAの場合黄色で塗りつぶし
        If Cells(i, "B").Value = "カテゴリA" Then
            'A列からF列を黄色で塗りつぶす
            Range(Cells(i, "A"), Cells(i, "F")).Interior.Color = RGB(255, 255, 0)
        End If
        
    Next i
    
    MsgBox "塗りつぶしが完了しました", vbInformation, "塗りつぶし完了"
    
End Sub
        

実行結果

カテゴリAのみ塗りつぶしが行えました。

カテゴリAを塗りつぶすマクロを実行させた結果の画像です

ワイルドカードで条件をあいまいに設定する

ワイルドカードを使用して、ステータスの『アクティブ』という文字が含まれている箇所のみを黄色で塗りつぶしを行います。 ワイルドカードの説明に関しては、こちらの記事を参考にしてください。

サンプルコード


Sub ワイルドカードで条件をあいまいに設定()
    
    Dim i As Long, LastRow As Long
    
    'A列で最終行を取得する
    LastRow = Cells(Rows.Count, "A").End(xlUp).Row
    
    '2行目から最終行までループ
    For i = 2 To LastRow
        
        'ステータスに「アクティブ」という文字が含まれていた場合、黄色で塗りつぶします
        If Cells(i, "C").Value Like "*アクティブ*" Then
            'A列からF列を黄色で塗りつぶす
            Range(Cells(i, "A"), Cells(i, "F")).Interior.Color = RGB(255, 255, 0)
        End If
        
    Next i
    
    MsgBox "塗りつぶしが完了しました", vbInformation, "塗りつぶし完了"
    
End Sub
        

実行結果

ステータスに『アクティブ』という文字が含まれている行のみが塗りつぶされました。

あいまい検索を行って塗りつぶしを終えた画像です

複数の条件が一致した行を黄色で塗りつぶす

カテゴリが『カテゴリA』かつステータスが『非アクティブ』となっている行を黄色で塗りつぶしを行います。 複数条件を指定する際はIF文に『And』もしくは『Or』を使用します。

例)Aが1の時かつBが2の時とする場合のIF文
  > If A = 1 And B = 2 Then
例)Aが1の時またはBが2の時とする場合のIF文
  > If A = 1 Or B = 2 Then

下記のサンプルコードではAndを使用した例です。

サンプルコード


Sub 複数条件一致()
    
    Dim i As Long, LastRow As Long
    
    'A列で最終行を取得する
    LastRow = Cells(Rows.Count, "A").End(xlUp).Row
    
    '2行目から最終行までループ
    For i = 2 To LastRow
        
        'B列のカテゴリが「カテゴリA」の場合かつ、C列のステータスが「非アクティブ」の場合、黄色で塗りつぶしを行う
        If Cells(i, "B").Value = "カテゴリA" And Cells(i, "C").Value = "非アクティブ" Then
            'A列からF列を黄色で塗りつぶす
            Range(Cells(i, "A"), Cells(i, "F")).Interior.Color = RGB(255, 255, 0)
        End If
        
    Next i
    
    MsgBox "塗りつぶしが完了しました", vbInformation, "塗りつぶし完了"
    
End Sub
        

実行結果

カテゴリが「カテゴリA」かつステータスが「非アクティブ」の箇所のみ、黄色で塗りつぶしが行われました。

複数条件一致させた結果の画像です

関連記事