【发布时间】:2016-10-08 02:53:53
【问题描述】:
我最初在下面问了一个问题。
基本上我希望 VBA 查看 L:L 列。如果单元格=程序,并且下面的单元格不等于车床,我希望删除上面的行。如果单元格不相等,则程序继续查找,直到数据结束。
意识到我需要以不同的方式看待数据,因为我丢失了需要保留的行。
新的逻辑,我觉得还是会用到一些旧的程序,但是 它需要使用另一列进行排序。我需要 VBA 来查看 E:E 列。如果下面行中的单元格是该单元格的副本 上面,然后查看该行中的 L 列以查看单元格是否显示 程序。如果是这样,下面的单元格应该是车床。如果不是车床删除 程序行,如果是车床,则保留两行。如果 E 列中的单元格 不重复,继续找。前任。如果
E5=E6,如果没有继续 看着。如果是,请查看 L5 是否显示 Program。如果是这样,请查看 L6 车床。如果不删除ROW5。
这是我收到的回答了我认为仍然会被使用的第一个问题
Dim rngCheck as Range
Dim rngCell as Range
Set rngCheck = Range("L1", "L" & Rows.Count - 1)
For each rngCell in rngCheck
If rngCell.value = "Program" And rngCell.offset(1,0).value <> "lathe" then
rngCell.offset(-1,0).EntireRow.Delete
End if
Next rngCell
【问题讨论】:
-
请注意,您正在迭代整个工作表,即超过 100 万次迭代。像您一样一次删除一行时,应该向后循环。
-
您的描述有点不清楚 - 您谈论的是“下面的单元格”,但下面不清楚 what... 这将有助于澄清每个参考文献的相关性到
-
我下面的例子是 if E5=E6