第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
可惜俺不会...