Note: The other languages of the website are Google-translated. Back to English

如何刪除單元格字符串中重複的字符或單詞?

假設每個單元格中都有重複的字符或單詞,並且您要刪除重複的字符並僅保留唯一的字符或單詞。 您如何在Excel中解決此問題?

使用用戶定義的功能刪除文本字符串中的重複字符

使用用戶定義的功能刪除由標點符號分隔的重複單詞


箭頭藍色右氣泡 使用用戶定義的功能刪除文本字符串中的重複字符

現在,如果您有一個文本字符串列表,則需要刪除重複的字符,如下面的屏幕截圖所示。 在這裡,我可以談談處理它的VBA代碼。

doc-remove-duplicate-characters-1

1。 按住 ALT + F11 鍵打開 Microsoft Visual Basic for Applications窗口.

2。 點擊 插入 > 模塊,然後將以下代碼粘貼到 模塊窗口.

VBA代碼:刪除單元格中文本字符串的重複字符

Function RemoveDupes1(pWorkRng As Range) As String
'Updateby Extendoffice
Dim xValue As String
Dim xChar As String
Dim xOutValue As String
Set xDic = CreateObject("Scripting.Dictionary")
xValue = pWorkRng.Value
For i = 1 To VBA.Len(xValue)
    xChar = VBA.Mid(xValue, i, 1)
    If xDic.Exists(xChar) Then
    Else
        xDic(xChar) = ""
        xOutValue = xOutValue & xChar
    End If
Next
RemoveDupes1 = xOutValue
End Function

3。 然後保存並關閉此代碼,返回到工作表,然後輸入此公式 = removedupes1(A2) (A2 是您要從中刪除重複項的數據單元)到數據之外的空白單元格中,請參見屏幕截圖:

doc-remove-duplicate-characters-1

4。 然後將填充手柄拖到要應用此公式的範圍單元格上,所有重複的字符已立即從每個單元格中刪除。

doc-remove-duplicate-characters-1


箭頭藍色右氣泡 使用用戶定義的功能刪除由標點符號分隔的重複單詞

如果單元格中有些單詞被某些標點符號分隔,則您也可以根據需要刪除重複的單詞。 請執行以下步驟:

1. 按住 ALT + F11 鍵打開 Microsoft Visual Basic for Applications窗口.

2。 點擊 插入 > 模塊,然後將以下代碼粘貼到 模塊窗口.

VBA代碼:刪除由單元標點符號分隔的重複單詞

Function RemoveDupes2(txt As String, Optional delim As String = " ") As String
    Dim x
    'Updateby Extendoffice
    With CreateObject("Scripting.Dictionary")
        .CompareMode = vbTextCompare
        For Each x In Split(txt, delim)
            If Trim(x) <> "" And Not .exists(Trim(x)) Then .Add Trim(x), Nothing
        Next
        If .Count > 0 Then RemoveDupes2 = Join(.keys, delim)
    End With
End Function

3。 然後保存並關閉此代碼,返回到工作表,然後輸入此公式 = RemoveDupes2(A2,“,”) 放入數據旁邊的空白單元格,請參見屏幕截圖:

doc-remove-duplicate-characters-1

4。 然後將公式複製到所需的單元格中,所有重複的單詞已從每個單元格中刪除。 看截圖:

doc-remove-duplicate-characters-1

備註:在以上公式中, A2 表示您要使用的單元格,而逗號(,)代表將單元格中的單詞分隔開的標點符號,您可以根據需要將其更改為任何其他標點符號。


最佳辦公效率工具

Kutools for Excel解決了您的大多數問題,並使您的生產率提高了80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過300種強大功能。 支持Office / Excel 2007-2019和365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能30天免費試用。 60天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 每天將您的工作效率提高50%,並減少數百次鼠標單擊!
officetab底部
按評論排序
留言 (66)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
還是壞了……實際上並沒有顯示任何東西。 這是我的單元格數據:27000,Basic,Products,Materials,From,Wood,Stone,Earthen,Raw,Materials,27100,Basic,Forest,Products,General,27110,Basic,Forest,Products,Sawmill,Products,27120,Basic ,Forest,Products,Wood,Pulp,27200,Glass 顯然有一些騙局。 將單元格留空。 想法?
網站主持人對此評論進行了最小化
沒關係,我是笨蛋。 因為我只想拉單詞,所以我重命名了模塊 RemoveDupes,但沒有在後面的代碼中更改 RemoveDupes。 固定,用錘子敲自己....
網站主持人對此評論進行了最小化
我將 RemoveDupes 與 ConCat (VBA 的優點,而不是 CON(I-SUCK-BECAUSE-I'M-MICROSOFT)CATENATE)結合到這個:=RemoveDupes(ConCat(",",G495:G502),",") 所以它把我的細胞拉進來,然後把所有的騙子都抹掉了。 感謝 RemoveDupes,這裡是 ConCat: Function ConCat(Delimiter As Variant, ParamArray CellRanges() As Variant) As String Dim Cell As Range, Area As Variant If IsMissing(Delimiter) Then Delimiter = "" For Each Area in CellRanges If TypeName( Area) = "Range" Then For Each Cell in Area If Len(Cell.Value) Then ConCat = ConCat & Delimiter & Cell.Value Next Else ConCat = ConCat & Delimiter & Area End If Next ConCat = Mid(ConCat, Len(Delimiter ) + 1) 結束函數
網站主持人對此評論進行了最小化
我嘗試了您的解決方案“使用用戶定義的函數刪除由標點符號分隔的重複單詞”,它適用於單元格中的多個單詞但並不能完全解決我的問題。 我有一個具有多個值的單元格,並希望與另一個具有多個值的單元格進行比較,然後讓它刪除兩個單元格之間存在的重複項。 有沒有辦法做到這一點?
網站主持人對此評論進行了最小化
同樣在這裡請幫助
網站主持人對此評論進行了最小化
這個線程還活著嗎? 我將非常感謝這個 VBA 函數的一些見解。我的問題與代碼有關,如果我需要指示它找到特定的標點符號作為分隔符。如果我使用“@”作為標點符號?
網站主持人對此評論進行了最小化
你的建議太棒了! 我在大約 58,400 分鐘內整理了 2 條記錄,節省了一周(或更多)的工作時間。 我的副本有點難把這個例子“V&O Liquid Fuel Lantern 13-1/2in blk Fuel lantern”變成這個“V&O Liquid Fuel Lantern 13-1/2in blk”謝謝。
網站主持人對此評論進行了最小化
您好,我需要您的幫助,我嘗試了您的代碼,但它不起作用,可能是因為我有數字我有重複的電話號碼,用逗號分隔 請告訴我該怎麼做 謝謝
網站主持人對此評論進行了最小化
同樣在這裡請幫助
網站主持人對此評論進行了最小化
太棒了,謝謝! 謝謝你! 謝謝你!
網站主持人對此評論進行了最小化
太棒了,謝謝你!.....
網站主持人對此評論進行了最小化
嗨,伙計,我需要你的幫助。 如果我想提取重複項我該怎麼辦? 在 A1 (asdfghjiklkk) 所以 k 是重複字符我想要 A2 (k) 我該怎麼辦?
網站主持人對此評論進行了最小化
如果我想保留某個單詞而其他單詞不重複,是否可以調整功能?
網站主持人對此評論進行了最小化
非常感謝您提供本指南,為我​​節省了很多工作! :)
網站主持人對此評論進行了最小化
這很有幫助。 我已經嘗試過了,它對我來說是例外的。 優秀的 !!!!
網站主持人對此評論進行了最小化
這是在單個單元格中查找重複短語的絕佳而簡單的解決方案,比我在尋找問題的答案時發現的一些冗長的宏解決方案要容易得多,謝謝!
網站主持人對此評論進行了最小化
感謝這段代碼 - 它為我節省了大量時間。
網站主持人對此評論進行了最小化
我有類似 1. 在單個單元格中顯示如下的數據,我想喜歡 2. 1. ZERPUR,MAHENDRAGARH, HARYANA-123029, 30771237, 8813073653, ZERPUR(16),MAHENDRAGARH, HARYANA-123029, 30771237, 8813073653 我需要這個喜歡 :- ZERPUR,MAHENDRAGARH, HARYANA-123029, 30771237, 8813073653 感謝和問候 Hanuman Singh 9034509168
網站主持人對此評論進行了最小化
教我怎麼做? 也需要知道。。
網站主持人對此評論進行了最小化
我們能找出第一個小寫字母的位置嗎


考試 - RAMSHsJHSAhsjDDD ------我想通過公式 = s 知道第一個小寫字母的位置
網站主持人對此評論進行了最小化
你好,梅哈班,
您可以應用以下數組公式來獲取第一個小寫字母的位置:
=MATCH(1,IF(ABS(CODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))-109.5)<=12.5,1),0)
請記住同時按 Ctrl + Shift + Enter 鍵。


希望對你有幫助,謝謝!
網站主持人對此評論進行了最小化
你好天陽

它工作正常......
其實我想要同樣的東西..

非常感謝 !!


梅哈班·辛格帕爾
網站主持人對此評論進行了最小化
如何刪除匹配的字符串重複...你能告訴我嗎


問候,
基蘭
網站主持人對此評論進行了最小化
你好,基蘭,
你能舉一個你的問題的例子嗎? 或者您可以插入附件圖像。
期待你的答复!
網站主持人對此評論進行了最小化
非常感謝,它對我有更多幫助。 但我想為我的數據集提供更多具體信息。
我有兩個列數據。 身份證和信息。 在信息列中,重複每個單元格項目 ID,如“Kant-、Udp-、Akr- 等”。 對於我的數據集,project_id 大於 15 並且它已修復。 所以我想從單元格中刪除repeated_id,但保留第一個。
示例:Kant-526 (0.0287),Kant-527 (0.0113),Kant-528 (0.0262) /// Kant-526 (0.0287),527 (0.0113),528 (0.0262),
Kant-543 (0.0685),Kant-544 (0.0685),Udp-097 (0.0141) /// Kant-543 (0.0685),544 (0.0685),Udp-097 (0.0141)

示例圖像附在此處。 有什麼解決方案。
網站主持人對此評論進行了最小化
你好,伊姆蘭,
很抱歉沒有解決您的問題,如果有人有好的想法,請在這裡評論。
感謝您!
網站主持人對此評論進行了最小化
我有自己的解決方案。 我在這裡使用了 SUBSTITUTE 公式,但它對我的數據來說太大了。 所以重複兩到三遍以獲得正確的結果。

=SUBSTITUTE(SUBSTITUTE("康德-","",2), ("康德-","",2)
在這裡,第 1 個 2 用於第二次康德替換,對於接下來的每個康德刪除,只需額外添加 ("Kant-","",2) 。 它為我工作。 但我更喜歡一個好的VBA。
網站主持人對此評論進行了最小化
感謝您的代碼。

你能幫我麼? 我正在使用宏功能刪除由單元格標點分隔的單詞,但是我的數據不是單詞實際上是短語。 就像“KTE,KTO,KTW,KTO”實際上是簡短的描述,例如“準備賬單,查看我的電子郵件,更新合同,查看我的電子郵件”。

是否可以更新 VBA 以刪除重複的短語而不是單詞?

非常感謝,這實際上會很有幫助。
網站主持人對此評論進行了最小化
嗨,阿隆索,
要刪除重複的短語,以下用戶定義函數可能會對您有所幫助,請嘗試一下。

函數 RemoveDuplicateValue(xStr As String, xDelim As String) As String
暗淡 x 值
如果 (Len(xDelim) > 0) 並且 (Len(Trim(xStr)) > 0) 那麼
使用 CreateObject("Scripting.Dictionary")
對於拆分中的每個 xValue(xStr, xDelim)
If Trim(xValue) <> "" And Not .exists(Trim(xValue)) Then .Add Trim(xValue), Nothing
下一頁
如果 .Count > 0 那麼 RemoveDuplicateValue = Join(.keys, xDelim)
結束
其他
RemoveDuplicateValue = xStr
如果結束
函數結束

然後應用這個公式:=RemoveDuplicateValue(A2,","),將分隔符更改為您自己的。
網站主持人對此評論進行了最小化
你好,天陽,



我希望得到以下單元格的幫助:

PR-波多黎各; 美國-美國; 美國-美國

我需要刪除重複的 US-UNITED STATES,因為我的上傳工具不允許重複。



我使用了上面的 VBA 並用“;”替換了我的公式分隔符。 連字符是否導致此問題? 它返回#NAME? 每當我運行公式時。 我是宏/VBA 的新手,但我確保將文件保存為啟用宏的文件。 我真的很想跟著這些到T。


感謝您提供所有這些已經很重要的信息,因為它對我必須完成的另一個項目有所幫助,非常感謝您提供任何額外的信息。
網站主持人對此評論進行了最小化
嗨,邁克爾,
你的意思是從一個單元格中刪除所有重複的短語,只留下唯一的短語嗎?
期待你的回复!
網站主持人對此評論進行了最小化
這是我正在尋找的輸出:

當前:PR-波多黎各; 美國-美國; 美國-美國
期望:PR-波多黎各; 美國-美國

希望這是有道理的,非常感謝您的快速回复。
網站主持人對此評論進行了最小化
嗨,邁克爾,
你只需要應用下面的代碼,然後使用這個公式:=RemoveDuplicateValue(A2,";")。 請嘗試,希望對您有所幫助!

函數 RemoveDuplicateValue(xStr As String, xDelim As String) As String
暗淡 x 值
如果 (Len(xDelim) > 0) 並且 (Len(Trim(xStr)) > 0) 那麼
使用 CreateObject("Scripting.Dictionary")
對於拆分中的每個 xValue(xStr, xDelim)
If Trim(xValue) <> "" And Not .exists(Trim(xValue)) Then .Add Trim(xValue), Nothing
下一頁
如果 .Count > 0 那麼 RemoveDuplicateValue = Join(.keys, xDelim)
結束
其他
RemoveDuplicateValue = xStr
如果結束
函數結束
網站主持人對此評論進行了最小化
非常感謝你。 你的回應比我的咖啡更受歡迎!
網站主持人對此評論進行了最小化
嗨,這真的很有幫助
但我想刪除“NO TO:”之後的整個單詞

例如:NO TO:[C11bx1]

NO TO:[C11bx3] 像這樣
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點