Excel VBAでフィルターをかけて表示されている行にマクロを適用する方法

Excel

ExcelのVBAを使って、フィルターをかけた後、表示されている行だけにマクロを適用したい場合があります。今回は、その方法をステップバイステップで解説します。

1. フィルターをかける方法

まず、フィルターをかけるには、データが含まれる範囲を選択し、「データ」タブから「フィルター」をクリックします。これで、各列の見出しにフィルターボタンが表示され、特定のデータを絞り込むことができます。

例えば、特定の条件でデータを絞り込み、必要な行だけを表示させることができます。

2. フィルター後に表示されている行のみを対象にする

次に、VBAでフィルター後に表示されている行だけを対象にする方法です。Excel VBAでは、特定の条件を満たして表示されている行だけを選択して操作することができます。

以下のVBAコードを使用することで、フィルターで表示されている行だけを対象に処理を行えます。

Sub FilteredRowsMacro()
    Dim cell As Range
    Dim row As Range

    ' フィルターが適用されている範囲を選択
    For Each row In ActiveSheet.UsedRange.Rows
        ' 非表示の行はスキップ
        If row.Hidden = False Then
            ' 行に対して処理を実行
            ' 例:セルの値を変更
            row.Cells(1, 1).Value = "処理済み"
        End If
    Next row
End Sub

このコードでは、フィルターで表示されている行だけを対象にして、セルの値を「処理済み」に変更しています。必要に応じて、この部分を他の処理に変更できます。

3. フィルター後の特定列に対する処理

場合によっては、フィルター後に特定の列に対してのみ処理を行いたいこともあるでしょう。その場合、以下のように特定の列に対してマクロを実行することができます。

Sub FilteredColumnMacro()
    Dim cell As Range
    Dim row As Range

    For Each row In ActiveSheet.UsedRange.Rows
        If row.Hidden = False Then
            ' 特定の列(例:2列目)に処理を適用
            row.Cells(1, 2).Value = "更新"
        End If
    Next row
End Sub

このコードでは、フィルター後に表示されている行の2列目に対して「更新」という文字を入力しています。

4. 注意点とまとめ

フィルター後にVBAを使って表示されている行に処理を適用する際は、非表示の行が含まれていないことを確認することが重要です。また、処理を行いたい範囲を明確に指定し、誤って非表示の行に処理が適用されないようにしましょう。

このように、VBAを使うことで、Excelのフィルター機能と組み合わせて特定の行にだけ処理を実行することが可能です。上記のコードを参考にして、必要な処理を適用してみましょう。

コメント

タイトルとURLをコピーしました