【问题标题】:(VBA) Delete entire row if cell X is less than AND delete entire row if cell Y is less than(VBA)如果单元格 X 小于则删除整行,如果单元格 Y 小于则删除整行
【发布时间】:2021-05-06 02:45:43
【问题描述】:

除了谷歌搜索、复制代码、尝试(而且大多失败)之外,我对 VBA 了解不多,并且在执行以下操作时遇到了麻烦。

我想如果 AF 列中的值 则删除整行,然后 如果 AG 列中的值 则删除整行。 p>

我可以通过以下方式完成第一部分:

'get last row in column AF
Last = Cells(Rows.Count, "AF").End(xlUp).Row
For i = Last To 1 Step -1
    'if cell value is less than 60
    If (Cells(i, "AF").Value) < 60 Then
        'delete entire row
        Cells(i, "AF").EntireRow.Delete
    End If
Next i

但删除 AG

'get last row in column AG
Last = Cells(Rows.Count, "AG").End(xlUp).Row
For i = Last To 1 Step -1
    'if cell value is less than 90
    If (Cells(i, "AG").Value) < 90 Then
        'delete entire row
        Cells(i, "AG").EntireRow.Delete
    End If
Next i

第一部分有效(删除 AF

我认为这是一个我正在努力解决的简单问题,因为我并不真正了解 VBA。任何帮助将不胜感激。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您可能应该同时组合这两个规则,并在遍历所有内容后删除。这将大大提高效率。见下文(未经测试)。

    Sub DeleteSomeRows()
        Dim killRange As Range
        Dim the90Column As Long, the60Column As Long, i As Long, Last As Long
        
        the90Column = Range("AG1").Column
        the60Column = Range("AF1").Column
        Last = Cells(Rows.Count, "AG").End(xlUp).Row
        
        For i = Last To 1 Step -1
            'if cell value is less than 90
            If Cells(i, the90Column).Value < 90 Or Cells(i, the60Column).Value < 60 Then
                If killRange Is Nothing Then
                    Set killRange = Cells(i, 1).EntireRow
                    Else
                    Set killRange = Union(killRange, Cells(i, 1).EntireRow)
                End If
                    
            End If
        Next i
        
        If Not killRange Is Nothing Then
            killRange.Delete
        End If
    
    End Sub
    

    【讨论】:

    • 感谢您的回复,没有删除带有这些参数的任何一行,但我会修改该通用格式。
    • 我做了几个柚木,我认为它们不会有什么不同,但试一试或看看它,看看是否不能解决问题。我很确定它应该可以工作。
    • 请注意,如果您正在单步执行代码,则直到循环之后才会删除(这是提高效率的地方)。
    • 再次感谢。添加该代码时它什么也不做——这两列保持不变。我将它拆分为与宏的其余部分分开运行只是为了检查,也没有任何反应。
    • 对不起,我想你会知道定义 Last 变量,但你很清楚这对你来说是新领域,所以这是我的错。我几乎可以肯定它现在应该可以工作了。我在这里有一个测试文件,可以成功地完成你正在做的事情。 1drv.ms/x/s!AiO7_3PtXmZ9g4Zl6WJg0xrPqu7ZLw?e=G8vn0g 假设这可行,请不要忘记点击Accept。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 2021-07-07
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 2019-08-11
    相关资源
    最近更新 更多