VBA マクロの一部としてデータをフィルタリングする

VBA マクロの一部としてデータをフィルタリングする

レポートを自動化するマクロを作成しようとしています。問題は、ソース データが不要なデータを持ち込み、レポート自体がテーブル全体に基づいて多くの計算を実行することです。テーブルに基づいて何百もの計算が実行されるため、レポートの各数式に包含パラメーターを追加すると、非常に時間がかかります。

レポートを手動で更新する場合は、フィルターを使用してデータを除外し、関連データを削除することで、この問題を簡単に回避できます。ただし、ファイルを自動化しようとしているので、ボタンをクリックするだけで更新でき、20 ~ 30 分も費やす必要はありません。

したがって、私がやりたいこと、しかしこれまでうまくいかなかったことは、列に特定の文字列が含まれているすべての行を VBA で削除することです。

これは、データを更新し、テキストを列に変換を使用して日付列を修正し、データのセクションを削除し、KPI のシートの数式を計算し、それを今週の日付として保存する、より大きなマクロの一部です。

他のレポートを更新するためのマクロをすでにいくつか作成しているので、他のすべての手順は自動化できますが、これでは困惑してしまいました。Google-Fu でもだめでした。

答え1

このサブは、変数で定義された値がある場合にシートの行全体を削除します。文字列変数によって定義された列にあるコラム

Sub deleterows()
    Dim a As Application
    Dim wkb As Workbook
    Dim wks As Worksheet
    Dim DataRange As Range
    Set a = Application
    Set wkb = ThisWorkbook
    Set wks = wkb.ActiveSheet
    wks.Application.ScreenUpdating = False
    thecolumn = 2 'this have to be changed to the desired column
    thestring = "some text" ' this have to be changed too
    reviewing = True
    visitrow = 1
    While reviewing = True
        visitrow = visitrow + 1
        If wks.Cells(visitrow, 1) = "" Then
            reviewing = False
        End If
        celldata = wks.Cells(visitrow, thecolumn)
        If IsNumeric(celldata) = True Then
            celldata = Trim(Str(celldata))
        End If
        If celldata = thestring Then
            wks.Rows(visitrow).Delete
            visitrow = visitrow - 1
        End If
    Wend
   wks.Application.ScreenUpdating = True
   Message = MsgBox("Finished!", vbOKOnly)
End Sub

関連情報