如何比较字符串和子字符串

时间:2016-07-04 01:10:23

标签: excel-vba substring vba excel

我有点坚持这个案子。我的问题是我想找到一个“类似”的文本,并用正确的文本替换它。

示例:

我有一个文字: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 个答案:

答案 0 :(得分:0)

你基本上想要添加你的范围&#34;正确&#34;您的自定义词典的选项,然后运行拼写检查,您已取消选中&#34;忽略数字,&#34;您可以将其设置为自动接受它找到的所有内容,或者要求用户单击“确定”进行确认,然后将它们保留在字典中或清除它们。

你可以进入一堆逻辑,为最长的公共子序列编写部分匹配算法,但你基本上是用你所描述的创建一个拼写检查器,而你已经有了一个。因此,如果这不能满足您的需求,请详细说明原因。 : - )

如果您的&#34;单词列表&#34;经常更改,然后每次拼写检查时都需要将它们添加到字典中。如果它没有,并且它是一个简短的列表,你可以突出显示它,拼写检查并将它们全部添加。

要使其正常工作,您需要进入文件/选项校对,并取消选中忽略带数字的单词的选项。

有很多关于修改自定义词典的点击,所以如果您需要在VBA中执行此操作,我将不会重新编写代码。选择你喜欢的并继续使用它,如果你遇到问题,请在这里发帖。 (我开始一个新线程,其中包含您遇到的问题。)

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