如何在excel中使用VB删除比较行

我有一个工作表,在编号相同的情况下,比较D(规格)的尺寸,
保留尺寸大的,自动删除小那行,谁能帮我做格宏,在线等,
如果回答的好。愿意追加~~~急~~~
A B C D
1 编号 名称 属性 规格
2 1 AD AD 6
3 2 BD BD 14
4 3 CD CD 14
5 3 CD CD 7
因为我这个表格数据会比价大,筛选我也会,但是总没有宏来的方便,谢谢各位,我愿意追加分数,希望大家帮我解决!
现在的问题是我用2位的代码后,我数据表上还有4排内容也会删除,能不能从第六排开始,谢谢了!

第1个回答  2008-09-01
Sub aa()
With Sheet1
Dim i, k As Integer
i = 1
Do While .Cells(i, 1) <> ""
i = i + 1
Loop

For k = 1 To i

If .Cells(k, 1) = .Cells(k + 1, 1) Then
If .Cells(k, 4) > .Cells(k + 1, 4) Then
.Range("A" & k, "A" & k).EntireRow.Delete
Else
.Range("A" & k + 1, "A" & k + 1).EntireRow.Delete
End If
End If

Next k

End With
End Sub

没调试过.你自已调调看.本回答被提问者采纳
第2个回答  2008-09-01
这个问题不用使用宏的,使用自动筛选功能,先筛选相同的编号,然后再按照规格排序,然后把规格比较小的都删除。剩下的就是你想要的表了,能尽量不用宏,就不用啊。
第3个回答  2008-09-02
Sub Macro1()
Application.ScreenUpdating = False
Columns("A:D").Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("D2") _
, Order2:=xlDescending, Header:=xlGuess
Range("E2").Formula = "=IF(A2<>A1,ROW(),"""")"
Range("E2:E" & [E2].End(4).Row).FillDown
Range("E2:E" & [E2].End(4).Row) = Range("E2:E" & [E2].End(4).Row).Value
Columns("A:E").AutoFilter Field:=5, Criteria1:="="
Rows("2:" & [A2].End(4).Row).SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
Selection.AutoFilter
Columns("E:E").Delete Shift:=xlLeft
Range("A1").Select
Application.ScreenUpdating = True
End Sub
第4个回答  2008-09-04
同意3楼的代码,基本解决问题,建议用代码前对数据进行排序。
想从“第六排开始”把 for k=1 to i 改为 k=6 to i不就行了。
3、4楼都是高手
第5个回答  2008-09-02
可惜俺不会...
相似回答