web-dev-qa-db-ja.com

単語全体を検索して一致させるのみの回避策

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

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

Word - 'Find whole words only' example

3
Kiranshell

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

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

このExcelアドインをインストールします。 http://www.codedawn.com/Excel-add-ins.php 新しいFind&Repalce RegExボタン(または2003のメニューオプション)を使用して、この検索語を使用します\bword\b、マッチケースのチェックマークを外し、検索を押します。

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

私はこのテストでほとんどのケースをカバーしたと思います: test image

2
Luke

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

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

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

賢明な言葉またはグリースは言葉です

Sword of Damocles .....の場合は正しくFALSEですが、次のような場合もFALSEになります。

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

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

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

4
barry houdini

エレガントなRegExソリューションはExcel2010では機能しませんでしたが、簡単な回避策としてMSWordを使用できます。

  1. Excelで範囲を選択します。

  2. それをコピーします。

  3. それを新しい空白のMSWord文書に貼り付けます。

  4. Wordの検索と置換機能を使用しますが、検索するテキストで[単語全体を検索する]を選択します。

  5. 置き換えが完了したら、そのテーブル全体をWordからコピーします。

  6. Excelに戻ります。範囲はまだ選択されています。コピーしたテーブルを貼り付けるだけです。

0
CreatedByBrett

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

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

この関数は、Wordが全体であるかメモであるかをチェックします。関数のコードは次のとおりです。

見つかった式の前後の文字をチェックし、文字でない場合(アクセント付きかどうか)は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
0
user281675

「検索」セクションにパラメータを入力するときは、Wordの前後にスペースを入れてください。私の場合、「Van」は「SAVANA」の変更を防ぎ、「Man」は「Mankind」の変更を防ぎます。

0
davidplowman