簡體   English   中英

excel vba 自動過濾范圍並刪除列 D 中所有帶有 0 的行

[英]excel vba autofilter range and delete all rows with 0 in col D

我有一長串數據(產品標簽),另一張表有原始數據和計算。 我有一個宏可以導入 A2 - AP2 中的數據。 它掃描列 D 並刪除列 D 中具有零 (0) 值的任何行。我可以正常工作,但是,是否有某種方法可以更改代碼以僅刪除從 A 到 AP 的行? 我還有 3 個其他代碼需要這個,但由於其他數據/輔助列,我不能刪除整行?

Worksheets("Labels").Activate
 ActiveSheet.AutoFilterMode = False

 ActiveSheet.Range(drop2).AutoFilter Field:=4, Criteria1:="=-", _
        Operator:=xlOr, Criteria2:="=+"

    Dim oRow As Range, rng As Range
    Dim myRows As Range
    With Sheets("Labels")
        Set myRows = Intersect(.Range("D:D").EntireRow, .UsedRange)
        If myRows Is Nothing Then Exit Sub
    End With

    For Each oRow In myRows.Columns(1).Cells
        If oRow.EntireRow.Hidden Then
            If rng Is Nothing Then
                Set rng = oRow
            Else
                Set rng = Union(rng, oRow)
            End If
        End If
    Next

    If Not rng Is Nothing Then rng.EntireRow.Delete

 ActiveSheet.AutoFilterMode = False
 Application.ScreenUpdating = True

如果沒有看到您的 excel 數據,我無法猜測您在代碼中做了什么。 但是,根據您的解釋,您將查看 D 列,如果發現 0,則將刪除整行。 但是,您不想刪除整行,因為這會刪除輔助列。 我只是想重復你說的話。 如果這是您想要的,請使用帶有 Shift:=xlUp 的范圍刪除函數調用

Range("A2:AP2").Delete Shift:=xlUp

這不會刪除整行,而只會刪除 A2:AP2 中的數據並將下面的所有單元格向上移動。 有點刪除你的整行並保持你的輔助列不變。

更新 1:

我將嘗試用一個小例子來解釋它。 下面的屏幕截圖顯示了我正在使用的示例數據,

在此處輸入圖片說明

黃色標記的單元格的值為零,除輔助列數據外,整行都需要清除。 下面是這個excel數據的示例代碼,

Dim i As Integer
Dim myRows As Range

Set myRows = Intersect(Sheet1.Range("A:E").EntireRow, Sheet1.UsedRange)
If myRows Is Nothing Then Exit Sub

For i = 1 To myRows.Rows.Count
    If Sheet1.Cells(i, 4) = 0 Then
        Sheet1.Range("A" & CStr(i) & ":E" & CStr(i)).Delete (xlUp)
    End If
Next

如果上面的代碼被執行,下面是結果的屏幕截圖。 請注意,具有 0 值的 D 列的整行都被刪除了,而 Helper 列不受影響。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM