简单的代码
从原来这样的数据

去重后变成这样,

vbnet
Sub deleteduplicate()
Dim maxcounts As Long
Dim i As Long
''总行数
maxcounts = Range("CO" & Rows.Count).End(xlUp).Row
''物料代码先去重
For i = maxcounts To 3 Step -1
If Range("I" & i) = Range("I" & i - 1) Then
Range("I" & i).ClearContents
End If
Next
''其他项目再去重,去重时判断物料代码单元格是否为空,以免出现刚好上下两个物料重名
For i = maxcounts To 3 Step -1
If Range("C" & i).Value = Range("C" & i - 1).Value And Len(Range("I" & i).Value) = 0 Then
Range("C" & i).ClearContents
End If
If Range("J" & i).Value = Range("J" & i - 1).Value And Len(Range("I" & i).Value) = 0 Then
Range("J" & i).ClearContents
End If
If Range("BS" & i).Value = Range("BS" & i - 1).Value And Len(Range("I" & i).Value) = 0 Then
Range("BS" & i).ClearContents
End If
Next
End Sub