保留不同的值VBA excel – 删除所有其余的

我有一个随机值的列,以某种格式重复数据:

第1栏

A A A A B B C C C A A D D E F F F G ... 

我试过使用

  Dim i As Integer Dim noRows As Integer 'count rows noRows = Range("B2:B10000").Rows.Count 'delete row entries that are duplicates.. For i = 1 To noRows If Range("H2").Cells(i + 1, 1) = Range("H2").Cells(i, 1) Then Range("H2").Cells(i + 1).Resize(1, 2).Clear End If Next i 

我很快意识到,根本无法工作。

我怎么能写一个代码,所以输出将是:

第1栏

 A [..] [..] [..] B [..] C [..] [..] [..] AD [..] [..] EF [..] [..] G ... 

如果[…]是零或零

不考虑绿色的第二个“66.63”字段,应该是红色的

不考虑绿色的第二个“66.63”字段,应该是红色的

将前一个值保存在variables中,并将其与单元格的值进行比较。

 Dim sPrv Dim oRng Dim i sPrv = "" '<- previous value Set oRng = ActiveSheet.Range("H2", ActiveSheet.Range("H2").End(xlDown)) '<- set range of one column starting from H2 to the end of row Debug.Print oRng.Rows.Count '<- Row count. For i = 1 To oRng.Rows.Count Debug.Print i, sPrv, oRng.Cells(i,1), sPrv = oRng.Cells(i,1) '<- print counter, previous value, cell value, sPrv = Cell ? If sPrv = oRng.Cells(i, 1) Then '<- current value the same as previous oRng.Cells(i, 1).Value = "" '<- Set the cell value to blank Else sPrv = oRng.Cells(i, 1).Value '<- Keep the new value for the next comparison and leave the cell value as is End If Next 

试试这个将会起作用。 我已经创build了一个假专栏,在该专栏中将标记为1来标识重复。

码:

 Sub stack() Dim s1 As Worksheet Set s1 = Sheets("Sheet1") For i = 2 To s1.Range("A1").End(xlDown).Row If s1.Cells(i, 1).Value = s1.Cells(i - 1, 1) _ Then s1.Cells(i, 2).Value = "1" End If Next For j = 2 To s1.Range("A1").End(xlDown).Row If s1.Cells(j, 2).Value = 1 Then s1.Cells(j, 1).Value = "[..]" End If Next s1.Columns("B").Delete End Sub