我正在努力做一些应该非常简单的事情,但是,我已经阅读了至少15种方法,似乎无法使它正常工作。
这是一个示例数据集:
9:30:01 584.7
9:30:01 590
9:30:01 595
9:30:02 584.51
9:30:03 584.62
9:30:04 584.44
9:30:05 584.05
我只想每秒一排,所以在前三排中,只需要停留一排。我不在乎是第一个还是最后一个,但是我一直使用的代码会保留最后一个,在这种情况下为595。
我这样做的方法是使用for循环,该循环清除与下一行具有相同时间的行的内容。然后,我对整个范围进行排序。
我想有一种更简单的方法可以简单地从开始删除多余的行。但是,当我在范围上使用delete而不是clear时,它不会删除所有重复的行。
这是我希望数据看起来像的样子:
9:30:01 595
9:30:02 584.51
9:30:03 584.62
9:30:04 584.44
9:30:05 584.05
我需要整个工作表都这样。时间是B列,值是C列。
这是我正在使用的代码,
LastRow = ActiveSheet.UsedRange.row - 1 + _
ActiveSheet.UsedRange.Rows.Count
For RowNum = 2 To LastRow
If (Range("B" & RowNum) = Range("B" & RowNum + 1)) Then
Range("B" & RowNum).EntireRow.Clear
End If
Next RowNum
Range("A2:C" & LastRow).Sort key1:=Range("B2:B" & LastRow), _
order1:=xlAscending, Header:=xlNo
不要循环。使用RemoveDuplicates。比任何循环都快。一行代码。
Sub test()
ActiveSheet.Range("B:C").RemoveDuplicates Columns:=1, Header:=xlNo
End Sub
编辑:屏幕截图
之前
后
编辑:在Mac的Excel 2011中不起作用(如图)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句