検索、単語全体の一致のみの回避策

検索、単語全体の一致のみの回避策

気付いたのですが、Excel の検索には「単語全体のみ一致」するオプションがありません (「セルの内容全体と一致」のことではありません)。たとえば、「part」を検索しても「partner」は一致しません。MS Word にはこのオプションがあります (MS Word のスクリーンショットを確認してください)。

Excel でこの問題を回避する方法はありますか?

単語 - 「単語全体を検索する」の例

答え1

スコットが指摘したように、私の最初の回答は間違っていました。

単語境界を定義する方法は多数あるため、これを公式で行うのは困難です。\b正規表現に (単語境界) が存在するのはそのためだと思います。Excel の検索/置換ダイアログでそれらを使用できればよいのですが。

このExcelアドインをインストールし、http://www.codedawn.com/excel-add-ins.php新しい正規表現の検索と置換ボタン (または 2003 ではメニュー オプション) をクリックし、この検索語句を使用して\bword\b、大文字と小文字を区別するのチェックを外すかチェックを付けて、[検索] をクリックします。

bは小文字であることが重要であり、正規表現について少し学ぶ必要があります(推奨)このサイト) を使用すると、句読点を含むものを検索できますが、検索対象が標準の文字/数字だけであれば、タグ間に任意の文字/数字を入れてもかまいません\b

このテストでほとんどのケースをカバーできたと思います: テスト画像

答え2

数式的には、句読点がないと仮定して、この数式で「単語」(大文字と小文字を区別しない)を検索し、正確な単語に対してのみTRUEを取得できます。

=ISNUMBER(SEARCH(" Word "," "&A1&" "))

次のようなテキストに対してTRUEを返します。

賢明な人への一言 またはグリースという言葉

そして正しくはFALSEですダモクレスの剣.....しかし、次のような場合はFALSEになります。

私の言葉!感嘆符は一致を否定するため

句読点に対処するには、複数のSUBSTITUTE関数を使用できます。たとえば、カンマ、セミコロン、感嘆符を無視するには、このバージョンを使用できます。

=ISNUMBER(SEARCH(" Word "," "&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,",",""),";",""),"!","")&" "))

答え3

「検索」セクションにパラメータを入力するときは、単語の前または後にスペースを入れるだけです。私の場合、「Van」は「SAVANA」が変化しないようにし、「Man」は「Mankind」が変化しないようにします。

答え4

その問題の解決策を見つけました。

標準検索を実行して 1 つの結果が見つかった後に呼び出す関数を作成する必要があります。

この関数は、単語が完全か音符かをチェックします。関数のコードは次のとおりです。

見つかった式の前後の文字をチェックし、文字でない場合は (アクセント付きかどうかに関係なく) true を返し、そうでない場合は false を返します。

Function WholeWord(ByVal text As String, ByVal expression As String) As Boolean

Dim aux1 As Integer: aux1 = 0
Dim aux2 As Integer: aux2 = 0


Dim condition1 As Boolean: condition1 = False
Dim condition2 As Boolean: condition2 = False

aux1 = InStr(1, text, expression, vbTextCompare)

If aux1 = 1 Then
condition1 = True
Else
If UCase(Mid(text, aux1 - 1, 1)) Like "[!A-ZÂÊÎÔÛÁÉÍÓÚÇÃÕÀÈÌÒÙÄËÏÖÜ]" Then
condition1 = True
End If
End If

aux2 = aux1 + Len(expression)

If aux2 = Len(text) + 1 Then
condition2 = True
Else
If UCase(Mid(text, aux2, 1)) Like "[!A-ZÂÊÎÔÛÁÉÍÓÚÇÃÕÀÈÌÒÙÄËÏÖÜ]" Then
condition2 = True
End If
End If

If condition1 = True And condition2 = True Then
WholeWord = True
Else
WholeWord = False
End If

End Function

関連情報