gpt4 book ai didi

vba - 删除行 IF AND THEN ELSEIF

转载 作者:行者123 更新时间:2023-12-04 21:37:25 25 4
gpt4 key购买 nike

每个人!

我有一个沉重的文件,在 A 和 D 列中有不同的值。
现在我想让这个脚本完成以下操作:

  • 如果 A 列中的值是 D 列中的“选项一”和“K”,则删除这一整行。
  • 此外,如果 A 列中的值为“选项二”和 D 列中的“M”,则删除整个原始数据

  • 以下代码执行了 70% 的此操作,但我找不到问题。
    它总是留下一些行并完全删除不需要的条目,我必须运行此代码两次。

    将感谢您的帮助!谢谢你!
    Sub RemoveSomeLines()

    Dim RemoveRow As Long

    RemoveRow = Cells(Rows.Count, "A").End(xlUp).Row
    For y = 1 To RemoveRow
    If Cells(y, "A").Value = "Option One" And _
    Cells(y, "D").Value = "K" Then
    Cells(y, "A").EntireRow.Delete

    ElseIf Cells(y, "A").Value = "Option Two" And _
    Cells(y, "D").Value = "M" Then
    Cells(y, "A").EntireRow.Delete

    End If
    Next y

    End Sub

    最佳答案

    尝试倒退:

    For y = RemoveRow To 1 Step -1

    它可能会跳过行,因为您要删除一行,向上移动下一行,然后跳过在下一个循环中向上移动的行,因为 y 递增 1。

    它看起来像这样:

    删除第 20 行。
    整张纸向上移动。
    第 21 行现在是第 20 行。
    y 在下一个循环中递增,变为 21。
    新的第 20 行实际上完全被跳过了。

    或者,我认为如果在删除一行时将 y 减 1,它会起作用,但它的代码更改较少,只是为了向后而不是向前工作。

    关于vba - 删除行 IF AND THEN ELSEIF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32659111/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com