Report というアクティブ シートには、I と F の 2 つの列があります。
テキスト"Grand Total"を含む繰り返しセルがあります。
総計が自動的に含まれている場合、行全体を削除したいと思います。
VBAコードはいいでしょう。
次の VBA コードを使用すると、特定のセル値を持つ行をすばやく削除できます。次の手順に従ってください。
特定の行を削除する範囲を選択します。
[開発者] > [Visual Basic] をクリックすると、アプリケーション用の新しい Microsoft Visual Basic ウィンドウが表示されます。[挿入] > [モジュール] をクリックし、次のコードをモジュールに入力します。
セル値 (総計) に基づいて行全体を削除する VBA コード:
Sub Delete_Rows()
Dim rng As Range, cell As Range, del As Range
Set rng = Intersect(Range("A1:D22"), ActiveSheet.UsedRange)
For Each cell In rng
If (cell.Value) = "Grand Total" _
Then
If del Is Nothing Then
Set del = cell
Else: Set del = Union(del, cell)
End If
End If
Next cell
On Error Resume Next
del.EntireRow.Delete
End Sub
次に、「再生/実行」ボタンをクリックしてコードを実行すると、特定の値を持つ行が削除されました。
(注: Excel に [開発者] タブが表示されない場合は、次の手順を実行します。1) [Office] ボタンをクリックし、[Excel のオプション] をクリックします。2)[人気] カテゴリの [Excel を操作するための上位オプション] で、[リボンに [開発者] タブを表示する] チェック ボックスをオンにして、[OK] をクリックします。)
使用するAutoFilter
と非常に効率的です。VBA
これは、なしで(つまり、手動で)行うこともできます。
メイン サブ
Sub Main()
Dim ws As Worksheet
Dim rng1 As Range
Dim StrIn As String
Dim rng2 As Range
Set ws = Sheets("Sheet1")
Application.ScreenUpdating = False
Set rng1 = ws.Range("F:F,I:I")
StrIn = "Grand Total"
For Each rng2 In rng1.Columns
Call FilterCull(rng2, StrIn)
Next
Application.ScreenUpdating = True
End Sub
サブを削除
Sub FilterCull(ByVal rng2, ByVal StrIn)
With rng2
.Parent.AutoFilterMode = False
.AutoFilter Field:=1, Criteria1:=StrIn
.EntireRow.Delete
.Parent.AutoFilterMode = False
End With
End Sub
これは、開始するのに役立ちます。
同様の質問も参照してください: Excel VBA で行を削除する