如果您想涵盖拼写错误、自动换行、图形排列等。也许SOUNDEX算法会适合您的问题。这是Excel的实现......
因此,如果您将其作为用户定义的函数插入,并=SOUNDEX(A1)
为每个产品行创建一个列,则在输入新产品名称后,您可以过滤具有相同 SOUNDEX 值的所有产品行。您可以通过让用户首先在对话框表单中输入新名称、进行验证、向他们展示一个包含可能重复项等的组合框下拉菜单来进一步自动化此操作。
编辑:
查找在一个范围内以空格结尾的字符串部分的小函数(回答您的评论)
Function FindSplit(Arg As Range, LookRange As Range) As String
Dim LookFor() As String, LookCell As Range
Dim Idx As Long
LookFor = Split(Arg)
FindSplit = ""
For Idx = 0 To UBound(LookFor)
For Each LookCell In LookRange.Cells
If InStr(1, LookCell, LookFor(Idx)) <> 0 Then
If FindSplit <> "" Then FindSplit = FindSplit & ", "
FindSplit = FindSplit & LookFor(Idx) & ":" & LookCell.Row
End If
Next LookCell
Next Idx
If FindSplit = "" Then FindSplit = "Cool entry!"
End Function
这有点粗糙......但它的作用如下
- 将单个单元格参数分成几部分并将其放入数组中 -->
split()
- 处理每一块 -->
For Idx = ...
- 在另一个范围内搜索包含该片段的字符串 -->
For Each ...
- 将找到它的单元格的片数和行号添加到结果字符串中
您可以将其作为公式输入/复制到每个单元格输入旁边,并立即知道您是否完成了很酷的输入。

单元格 D8 的值为 [ asd:3, wer:4 ]
注意在查找范围开始时使用绝对寻址;这样你就可以很好地复制公式。
编辑 2015 年 3 月 17 日
进一步评论 Joanna 2015 年 3 月 17 日,如果搜索参数是您正在扫描的范围的一部分,例如,=FINDSPLIT(C5; C1:C12)
您要确保如果并且确实是相同的单元格,If Instr(...)
则不会命中,因为这会产生误报. 因此,您将语句重写为LookCell
LookFor(Idx)
...
...
If InStr(1, LookCell, LookFor(Idx)) <> 0 And _
Not (LookCell.Row = Arg.Row And LookCell.Column = Arg.Column) _
Then
暗示
不要使用完整的列(例如 $C:$C)作为第二个参数,因为如果没有进一步的预防措施,函数往往会变得非常慢