我最初在下面问了一个问题。
基本上我希望VBA看L列L:L。如果cell = program,并且下面的单元格不等于lathe,我希望删除上面的行。如果单元格不相等则程序继续查找直到数据结束。
意识到我需要查看不同的数据,因为我正在丢失我需要留下的行。
新逻辑,我认为仍然会使用一些旧程序,但是 它需要使用另一列进行排序。我需要VBA来看看 E栏:E。如果下面一行中的单元格是单元格的副本 在上面,然后查看该行中的列L以查看该单元格是否显示 程序。如果是这样,下面的单元应该是车床。如果没有车床删除 程序行,如果是车床则留下两行。如果列E中的单元格 不重复,继续寻找。 EX。如果
E5=E6
,如果不继续 看着。如果是,请查看L5以查看是否说“程序”。如果是这样看看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
答案 0 :(得分:0)
这应该这样做
bind_rows(df1 = df1, df2 = df2, df3 = df3, .id = "whichDF")
答案 1 :(得分:0)
删除时最好从最后一次迭代到第一次。如果阻止你跳过行。
Sub RemoveRows()
Dim x As Long
With Worksheets("Sheet1")
For x = .Range("E" & .Rows.Count).End(xlUp).Row To 2 Step -1
If .Cells(x, "E").Value = .Cells(x - 1, "E").Value And Cells(x - 1, "L").Value = "Program" Then
.Rows(x).Delete
End If
Next
End With
End Sub