删除特定行
Deleting specific rows
我必须为里程计算器生成一个 Excel VBA 宏,所以我必须保留特定名称的第一个条目和最后一个条目,并删除其间的所有值。例如:
EXAMPLE DATA IMAGE
所以我想留下第一个Rivor Minor253
和最后一个Rivor Minor253
,但是中间的必须全部删除。现在,我可以手动执行此操作,但我有超过 3,000 行,这需要几天时间才能完成,而且我可以生成一个删除重复项的宏,但我不知道如何生成一个只删除中间行的宏。
谁能提供一个符合我描述的宏?
如果愿意,请先打开录制宏。假设 CHAINAGE
在 ColumnA 中,在 Row39 中并复制下来以适应,请尝试:
=OR(COUNTIF(B:B39,B39)=1,COUNTIF(B:B39,B39)=COUNTIF(B:B,B39))
然后将该列筛选为 select 并删除 FALSE 行。
作为一个宏,这非常简单。
Sub del_brick()
Dim fr As Long, lr As Long
With Worksheets("Sheet1") '<~~ set this properly!
lr = Application.Match("zzz", .Columns(2))
Do While lr > 40 '<~~ if lr is above row, there is nothing to delete
fr = Application.Match(.Cells(lr, 2).Value2, .Columns(2), 0)
If CBool(lr - fr - 1) Then
.Range(.Cells(fr + 1, 1), .Cells(lr - 1, 1)).EntireRow.Delete
End If
lr = fr - 1
Loop
End With
End Sub
我必须为里程计算器生成一个 Excel VBA 宏,所以我必须保留特定名称的第一个条目和最后一个条目,并删除其间的所有值。例如:
EXAMPLE DATA IMAGE
所以我想留下第一个Rivor Minor253
和最后一个Rivor Minor253
,但是中间的必须全部删除。现在,我可以手动执行此操作,但我有超过 3,000 行,这需要几天时间才能完成,而且我可以生成一个删除重复项的宏,但我不知道如何生成一个只删除中间行的宏。
谁能提供一个符合我描述的宏?
如果愿意,请先打开录制宏。假设 CHAINAGE
在 ColumnA 中,在 Row39 中并复制下来以适应,请尝试:
=OR(COUNTIF(B:B39,B39)=1,COUNTIF(B:B39,B39)=COUNTIF(B:B,B39))
然后将该列筛选为 select 并删除 FALSE 行。
作为一个宏,这非常简单。
Sub del_brick()
Dim fr As Long, lr As Long
With Worksheets("Sheet1") '<~~ set this properly!
lr = Application.Match("zzz", .Columns(2))
Do While lr > 40 '<~~ if lr is above row, there is nothing to delete
fr = Application.Match(.Cells(lr, 2).Value2, .Columns(2), 0)
If CBool(lr - fr - 1) Then
.Range(.Cells(fr + 1, 1), .Cells(lr - 1, 1)).EntireRow.Delete
End If
lr = fr - 1
Loop
End With
End Sub