タイプミス、ワードラップ、図の順列などをカバーしたい場合は、おそらく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 17-Mar-2015 にさらにコメントしてください。検索引数がスキャンしている範囲の一部である場合、たとえば、がヒットしない=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 など) を 2 番目の引数として使用しないでください。これ以上の予防策を講じないと、関数が非常に遅くなる傾向があります。