筛选具有ALMOST匹配列的行

我有几列的行。 我想取出列B中的文本不包含在列C中的行

这是一个示例表。 我想修剪这个数据, 所以只剩下第2行和第4行 。 需要注意的是,街道号码和ADDRESS 2栏中的街道名称之间有一个额外的空间,所以完全匹配不起作用。

示例表

对我而言,如果它是一个filter,或者用另一个表格填充公式,并不重要,但是我不知道macros(还)。 无论哪种方式,任何帮助表示赞赏! 这是一套30多万行,约70列。

非vba方法如下:

公式=IF(B2=SUBSTITUTE(C2," "," "),"","Remove")

在这里输入图像描述

然后sorting检查,筛选检查Not = Remove和复制过滤的单元格到一个新的选项卡。

所以我会做的是变换列B和C,以便在每个string中没有空格,就像这样

 For i = 2 to Worksheets("Sheet1").UsedRange.Rows.Count Cells(i,2) = Replace(Cells(i,2), " ", "") Cells(i,3) = Replace(Cells(i,3), " ", "") Next i 

然后你可以比较两个直接比赛。 我相信你可以从那里拿走它,但是如果没有的话,一种方法是再次循环,删除两列不相等的情况

 For i = Worksheets("Sheet1").UsedRange.RowsCount) to 2 Step -1 if Cells(i,2) <> Cells(i,3) then Cells(i,1).EntireRow.Delete end if Next i 

当然,这里假设你只需要查看循环中访问的行(或缺less)。

您也可以执行条件格式和颜色,然后过滤颜色并删除所选内容。

你可以尝试这样的事情…

 Sub KeepMatchingData() Dim lr As Long, lc As Long With Application .Calculation = xlCalculationManual .EnableEvents = False .ScreenUpdating = False End With lr = ActiveSheet.UsedRange.Rows.Count lc = ActiveSheet.UsedRange.Columns.Count + 1 Range(Cells(2, lc), Cells(lr, lc)).Formula = "=IF(TRIM(B2)=TRIM(C2),ROW(),NA())" On Error Resume Next Range(Cells(1, 1), Cells(lr, lc)).RemoveDuplicates Columns:=lc, Header:=xlYes Range(Cells(2, lc), Cells(lr, lc)).SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete Range(Cells(2, lc), Cells(lr, lc)).Clear With Application .Calculation = xlCalculationAutomatic .EnableEvents = True .ScreenUpdating = True End With End Sub