2016-07-04 39 views
1

我有點卡住這種情況。我的問題是我想找到一個「相似」的文字,並用正確的文字替換它。如何比較字符串和子字符串

例子:

我有一個文本:AB123

,我有一組文字: - ABC123 - bds983 - fgh2315 - lol922

我需要讓我的文字換成我的文本中最相似的文本,在這種情況下,ab123將變成abc123

我試過用InStr()比較它,但它會只有在錯字在左側或右側時纔有效,如果錯字處於中間位置,則不起作用。

下面的代碼

For i = 2 to LastRow 
If (InStr(Cells(i, 1).Value, Cells (3, 4).Value)) <> 0 Then 
Cells(3, 4).Value = Cells(i, 1).Value 
End If 
Next i 

感謝您的關注

蘭迪

+1

https://en.wikipedia.org/wiki/Longest_common_subsequence_problem –

回答

0

你基本上將要添加的「正確」的選擇,您的自定義詞典的範圍,然後運行拼寫檢查哪裏您沒有選中「忽略數字」,您可以將其設置爲自動接受所發現的所有內容,或者要求用戶單擊「確定」確認,然後將其保留在字典中或將其清除。

你可以進入一些邏輯,你可以爲最長的公共子序列編寫部分匹配算法,但你基本上用你描述的創建了一個拼寫檢查器,而你已經有了一個。所以如果這不關心你需要什麼,那麼請擴展爲什麼不。 :-)

如果您的「單詞」列表頻繁更改,則每次拼寫檢查時都需要將它們添加到字典中。如果沒有,並且它是一個簡短的列表,您可以突出顯示它,拼寫檢查並將它們全部添加。

爲此,您需要進入文件/選項打樣並取消選中忽略帶數字的單詞的選項。

修改自定義字典的命中有不少,所以如果您需要在VBA中執行此操作,我不會重新提供代碼。選擇你最喜歡的,並與它一起,然後在這裏發帖,如果你遇到問題。 (我會開始一個新的線程,具體到你遇到的問題。)

Application.SpellingOptions.IgnoreMixedDigits = False'how you ensure words with numbers get 
'spell checked if you end up coding it in VBA 

祝你好運!