【发布时间】:2014-07-12 06:41:30
【问题描述】:
我正在努力解决应该相当简单的事情,但是,我已经阅读了至少 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 循环来清除与它下面的行具有相同时间的行的内容。然后我对整个范围进行排序。
我想有一种更简单的方法可以从一开始就删除多余的行。但是,当我在范围上使用删除而不是清除时,它不会删除所有重复的行。
这是我希望数据的样子:
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
【问题讨论】:
-
如果自下而上循环,则可以立即删除该行。分享你的代码,我会帮你解决的。
-
@PortlandRunner 提供了一个很好的解决方案——您也可以为此使用 Range.RemoveDuplicates 方法(特别是因为您的列结构定义如此明确)......这是一个 MSDN 参考:msdn.microsoft.com/en-us/library/office/…
-
@Portland Runner 我已经添加了代码。你的想法听起来很聪明。
标签: vba excel duplicate-removal