【发布时间】:2014-03-09 02:20:45
【问题描述】:
假设您有两组数据,并且行数和列数相同。现在您要检查一组中单元格中的数据是否等于另一组中具有相同相对地址的单元格中的数据。如果对于一行的所有单元格都是如此,则从两组中删除该行。我可以通过比较每个单元格来非常轻松地编写代码,这对大型数据集不利。有关两列的代码,请参见下面的代码,其中两组数据恰好并排在同一张工作表中,它们之间的列偏移量为 300。
Dim RngOb As Range
Dim c As Range
Range("A1", "B1").Select
set RngOb = Range(Selection, Selection.End(xlDown))
For Each c In RngOb.Rows
If c.Cells(1,1).Value = c.Offset(0, 300).Cells(1,1).Value Then
If c.Cells(1,2).Value = c.Offset(0, 300).Cells(1,2).Value Then
c.EntireRow.Delete
End If
End If
Next
我的实际数据每天有 100 多列和不同的列数。我正在寻找一种智能、快速的方法来处理大型数据集。我高度评价答案、反馈和批评。 :D
【问题讨论】:
-
我会使用公式
=AND(A1=L1,B1=M1)添加临时列,然后根据 TRUE 值过滤此列并删除所有可见行。有关详细信息,请参阅@brettdj 的答案:stackoverflow.com/questions/21774624/… -
您确定要删除整行吗?如果数据集重叠怎么办?如果您有 100 行,但 DS 2 从第 11 行开始,并且 DS1 中的第 20 行与 DS2 中的第 31 行相同,那么当您删除 DS1 的第 20 行时,您将删除 DS2 的第 9 行。
-
如果数据像我的示例中那样并排,则列偏移量必须大于列数
-
@steinbitur 您正在测试的列之间的行中是否有数据?列之间的偏移量每天都一样吗?
-
您可以使用@TimWilliams 的THIS 漂亮的代码来比较范围