2

Report というアクティブ シートには、I と F の 2 つの列があります。

テキスト"Grand Total"を含む繰り返しセルがあります。

総計が自動的に含まれている場合、行全体を削除したいと思います。

VBAコードはいいでしょう。

ここに画像の説明を入力

4

3 に答える 3

3

次の VBA コードを使用すると、特定のセル値を持つ行をすばやく削除できます。次の手順に従ってください。

  1. 特定の行を削除する範囲を選択します。

  2. [開発者] > [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
    
  3. 次に、「再生/実行」ボタンをクリックしてコードを実行すると、特定の値を持つ行が削除されました。

(注: Excel に [開発者] タブが表示されない場合は、次の手順を実行します。1) [Office] ボタンをクリックし、[Excel のオプション] をクリックします。2)[人気] カテゴリの [Excel を操作するための上位オプション] で、[リボンに [開発者] タブを表示する] チェック ボックスをオンにして、[OK] をクリックします。)

于 2012-11-29T15:48:25.170 に答える
2

使用する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
于 2012-11-30T00:49:31.817 に答える
1

これは、開始するのに役立ちます。

http://msdn.microsoft.com/en-us/library/office/ee814737%28v=office.14%29.aspx#odc_Office14_ta_GettingStartedWithVBAInExcel2010_VBAProgramming101

同様の質問も参照してください: Excel VBA で行を削除する

于 2012-11-29T15:43:45.723 に答える