vba 如果为 0,则扫描 Col & Delete,如果不等于下一行,则插入行
vba scan Col & Delete if 0 and then insert row if not equal to next row
这是我的数据的样子。这是另一个 sheet 的摘要。
代码显示 运行 并执行我需要的操作,扫描 Co B 并删除是否存在 0 值,扫描 Col I 并插入行(如果下面的行不同),然后重复 Col H。但是我收到一条 "runtime 1004 application-defined or object defined error" 消息,而不是刚刚结束的宏。欢迎任何修改或建议
Range("A100000").End(xlUp).Activate
Range("N1") = ActiveCell.Row
For lRow = Cells(Cells.Rows.Count, "b").End(xlUp).Row To 1 Step -1
If Cells(lRow, "b") = 0 Then
Rows(lRow).EntireRow.Delete
End If
Next lRow
For lRow = Cells(Cells.Rows.Count, "I").End(xlUp).Row To 1 Step -1
If Cells(lRow, "I") <> Cells(lRow - 1, "I") Then '<~~ debugger highlights this line or the other version of this eq below
Rows(lRow).EntireRow.Insert
End If
Next lRow
For lRow = Cells(Cells.Rows.Count, "H").End(xlUp).Row To 1 Step -1
If Cells(lRow, "H") <> Cells(lRow - 1, "H") Then
Rows(lRow).EntireRow.Insert
End If
Next lRow
Range("A1").Activate
Application.ScreenUpdating = True
End Sub
If Cells(lRow, "I") <> Cells(lRow - 1, "I") Then
当lRow
不可避免地达到1
的值时,这将导致错误,因为
lRow - 1
是 0
- 并且没有行号 0.
您需要为这种可能性编码:
For lRow = Cells(Cells.Rows.Count, "I").End(xlUp).Row To 1 Step -1
If Cells(lRow, "I") <> Cells(lRow - IIf(lRow = 1, 0, 1), "I") Then
Rows(lRow).EntireRow.Insert
End If
Next lRow
应该可以解决问题。
这是我的数据的样子。这是另一个 sheet 的摘要。
代码显示 运行 并执行我需要的操作,扫描 Co B 并删除是否存在 0 值,扫描 Col I 并插入行(如果下面的行不同),然后重复 Col H。但是我收到一条 "runtime 1004 application-defined or object defined error" 消息,而不是刚刚结束的宏。欢迎任何修改或建议
Range("A100000").End(xlUp).Activate
Range("N1") = ActiveCell.Row
For lRow = Cells(Cells.Rows.Count, "b").End(xlUp).Row To 1 Step -1
If Cells(lRow, "b") = 0 Then
Rows(lRow).EntireRow.Delete
End If
Next lRow
For lRow = Cells(Cells.Rows.Count, "I").End(xlUp).Row To 1 Step -1
If Cells(lRow, "I") <> Cells(lRow - 1, "I") Then '<~~ debugger highlights this line or the other version of this eq below
Rows(lRow).EntireRow.Insert
End If
Next lRow
For lRow = Cells(Cells.Rows.Count, "H").End(xlUp).Row To 1 Step -1
If Cells(lRow, "H") <> Cells(lRow - 1, "H") Then
Rows(lRow).EntireRow.Insert
End If
Next lRow
Range("A1").Activate
Application.ScreenUpdating = True
End Sub
If Cells(lRow, "I") <> Cells(lRow - 1, "I") Then
当lRow
不可避免地达到1
的值时,这将导致错误,因为
lRow - 1
是 0
- 并且没有行号 0.
您需要为这种可能性编码:
For lRow = Cells(Cells.Rows.Count, "I").End(xlUp).Row To 1 Step -1
If Cells(lRow, "I") <> Cells(lRow - IIf(lRow = 1, 0, 1), "I") Then
Rows(lRow).EntireRow.Insert
End If
Next lRow
应该可以解决问题。