2017-04-11 75 views
2

我有幾列的行。我想取出其中在B列文本不列C篩選具有ALMOST匹配列的行

含有這是一個例子片的行。我想修剪這個數據,所以只有第2和第4行保持。需要注意的是,街道號碼和ADDRESS 2欄中的街道名稱之間有一個額外的空間,因此完全匹配不起作用。

Example Sheet

對我來說並不重要,如果它是一個過濾器,或與另一種公式填充板細胞,但我不知道宏(還)。無論哪種方式,任何幫助表示讚賞!這是一組超過30萬行和大約70列。

+1

參見[模糊查找添加爲Excel(https://www.microsoft.com/en-ca/download/details.aspx? ID = 15011)。 – Jeeped

+1

你可以使用'Replace'來擺脫所有的空白,然後進行比較。 –

回答

2

非VBA方法如下:

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

enter image description here

然後排序上的檢查,篩選檢查Not = Remove和複製過濾單元一個新的標籤。

0

所以我會做的是改變列B和C,以便有每個字符串中不能包含空格,像這樣

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 

當然,這是假設你只需要看看排在你的比賽循環中訪問(或缺乏)。

0

您也可以執行條件格式和顏色,然後過濾顏色並移除選定的顏色。

0

你可以試試這樣的事情...

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