如何過濾包含重複文本字符串(單詞)的單元格

如何過濾包含重複文本字符串(單詞)的單元格

我的一個朋友經常就他在 Excel 中處理數據時面臨的一些現實問題與我聯繫。

很多時候,我將他的查詢轉換為該站點上的 Excel 教程,因為它也可能對我的其他讀者有所幫助。

這也是一個這樣的教程。

我的朋友上週打電話給我,提出以下問題:

Excel 中的列中有地址數據,我想識別/過濾地址中包含重複文本字符串(單詞)的單元格。

這是他想要過濾其中包含重複文本字符串的單元格(帶有紅色箭頭的單元格)的類似數據集:

識別 Excel 中的重複文本字符串 - 數據集地址

現在讓這變得困難的是,這些數據沒有一致性。由於這是由銷售代表手動創建的數據集的彙編,因此數據集中可能存在差異。

考慮一下:

  • 任何文本字符串都可以在此數據集中重複。例如,它可以是地區名稱或城市名稱,或兩者兼而有之。
  • 單詞之間用空格字符隔開,城市名稱是在六個字之後還是八個字之後,並沒有一致性。
  • 有成千上萬條這樣的記錄,需要過濾那些有任何重複文本字符串的記錄。

在考慮了許多選項(例如文本到列和公式)之後,我最終決定使用 VBA 來完成這項工作。

因此,我創建了一個自定義 VBA 函數(’IdDuplicate’)來分析這些單元格,如果文本字符串中有重複的單詞,則給我 TRUE,如果沒有重複,則給我 FALSE(如下所示):

識別 Excel 中的重複文本字符串 - 數據集地址演示

此自定義函數分析文本字符串中的每個單詞並檢查它在文本中出現的次數。如果計數大於 1,則返回 TRUE;否則返回 FALSE。

此外,它被創建為僅計算超過三個字符的單詞。

一旦有了 TRUE/FALSE 數據,我就可以輕鬆過濾所有為 TRUE 的記錄。

現在讓我向您展示如何在 Excel 中執行此操作。

自定義函數的 VBA 代碼

這是通過在 VBA 中創建自定義函數來完成的。然後,此函數可用作 Excel 中的任何其他工作表函數。

相關問題  什麼是VPN翻墙?VPN工作原理

這是它的VBA代碼:

Function IdDuplicates(rng As Range) As String
Dim StringtoAnalyze As Variant
Dim i As Integer
Dim j As Integer
Const minWordLen As Integer = 4
StringtoAnalyze = Split(UCase(rng.Value), " ")
For i = UBound(StringtoAnalyze) To 0 Step -1
If Len(StringtoAnalyze(i)) < minWordLen Then GoTo SkipA
For j = 0 To i - 1
If StringtoAnalyze(j) = StringtoAnalyze(i) Then
IdDuplicates = "TRUE"
GoTo SkipB
End If
Next j
SkipA:
Next i
IdDuplicates = "FALSE"
SkipB:
End Function

如何使用此 VBA 代碼

現在您有了 VBA 代碼,您需要將它放在 Excel 的後端,以便它可以作為常規工作表函數工作。

相關問題  VLOOKUP 與 INDEX/MATCH 對比:哪一個更好用?

以下是將 VBA 代碼放在後端的步驟:

  1. 轉到開發人員選項卡。識別重複的文本字符串 - 功能區中的開發人員選項卡
  2. 單擊 Visual Basic(您也可以使用鍵盤快捷鍵 ALT + F11)從功能區中選擇 Visual basic
  3. 在打開的 VB 編輯器後端中,右鍵單擊任何工作簿對象。
  4. 轉到“插入”並單擊“模塊”。這將插入工作簿的模塊對象。為自定義 VAB 代碼插入模塊
  5. 在模塊代碼窗口中,複製並粘貼上面提到的 VBA 代碼。後端的 VBA 代碼 - 識別重複的文本字符串

一旦您在後端獲得了 VBA 代碼,您就可以將函數 – ‘IdDuplicates’ 用作任何其他常規工作表函數。

此函數採用一個參數,即您擁有文本的單元格的單元格引用。

該函數的結果是 TRUE(如果其中有重複的單詞)或 FALSE(如果沒有重複)。一旦你有了這個 TRUE/FALSE 列表,你可以過濾那些帶有 TRUE 的列表,以獲取其中包含重複文本字符串的所有單元格。

注意:我創建的代碼只是為了考慮那些長度超過三個字符的單詞。這可確保如果文本字符串中有 1、2 或 3 個字符長的單詞(例如 12 A、KGM 或 LDA),則在計算重複項時會忽略這些單詞。如果需要,您可以在代碼中輕鬆更改此設置。

此功能僅在您複製模塊中代碼的工作簿中可用。如果您希望此代碼在其他工作簿中也可用,則需要將此代碼複製並粘貼到這些工作簿中。或者,您也可以創建一個加載項(啟用這將使該功能在您系統上的所有工作簿中都可用)。

另外,請記住將此工作簿保存為 .xlsm 擴展名(因為其中包含宏代碼)。

哦,您好 👋很高興認識你。

訂閱我們的電子報,定期發送很棒的科技內到您的郵

相關問題  運用Microsoft Word唯讀模式的技巧

Post Comment