ゲイリーは、「sys」のような略語を検索して置換し、「systems」に置き換えたいと考えています。問題は、彼がすべてのオカレンスを置き換えると、「システム」の既存のインスタンスが「システムステム」に変換されることです。ゲイリーはそれぞれの出来事を調べて個別に置き換えることができましたが、それは永遠にかかります。彼は、Excelで「sys」の「単語全体」の出現のみをWordのように「システム」に置き換える方法があるかどうか疑問に思います。

Excelの検索と置換機能に精通している人は、一見すると、「セルの内容全体を一致させる」を使用できると思うかもしれません

仕事をするための設定。ただし、これは、略語「sys」がセル内の唯一のものである場合にのみ機能します。ゲイリーの状況では、そうではありません。彼は「sys」を含むフレーズと文全体を持っています(「sysadmin」または「syscheckが必要です」のように)。したがって、Wordの「単語全体」の設定のようなものに対する彼の要求。

それを念頭に置いて、試すことができることがいくつかあります。最適なソリューションは、ワークシートのテキストの性質によって異なります。

たとえば、混乱の可能性があるのが「システム」という単語だけの場合、

その場合、「システム」を「\ {[]}」などの一意のものに置き換えるのが最も簡単です。 (中括弧と括弧はほとんどのデータで一意であるため、私はそれらを好む傾向があります。)次に、「sys」を「systems」に置き換え、最後に「\ {[]}」を「system」に置き換えます。

「システム」以外に他の混乱点がある場合は、「検索対象」テキストにスペースを追加することをお勧めします。つまり、「sys」(スペースを含む)を検索し、「systems」(ここでもスペースを含む)に置き換えます。これにより、sysの後に句読点が続かず、セルの先頭で発生せず、セルの末尾で発生しない限り、すべての出現箇所が正しく検出されます。

もちろん、追加の検索を実行して、この情報の一部を取得することもできます。たとえば、「sys」(末尾にのみスペース)を検索できます

セルの先頭にあるオカレンスを検索します。 「sys」(先頭にスペースのみ)を検索すると、スペースが前に付いた「system」の出現箇所と一致するため、検索するのは適切ではありません。順次検索では、「sys」の後にピリオド、コンマ、疑問符、感嘆符、セミコロンなどを検索することもできます。

マクロを使用したい場合、以下は問題に取り組む方法の一例です。マクロは、検索したいものと置き換えたいものの入力を求めます。

Sub ReplaceOnlySpecifirdWord()

Dim c As Range, rng As Range, rngArea As Range     Dim vFind As String, vReplace As String     Dim v As Variant     Dim arrSplit As Variant     Dim s As String     Dim i As Integer, n As Long     Dim b As Boolean     Const csDELIMITER = " "



On Error Resume Next     ' Reference Constants only     Set rng = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)

If rng Is Nothing Then         MsgBox "There are no constants on active sheet...", vbExclamation         Exit Sub     End If     On Error GoTo 0

' Get Find and Replace strings     v = InputBox(Prompt:="Please enter String to be replaced.")

If v <> "" Then         vFind = v     Else         MsgBox "Wrong entry; app is going to be terminated.", vbExclamation         Exit Sub     End If

v = InputBox(Prompt:="Please enter Replace String.")

If v <> "" Then         vReplace = v     Else         MsgBox "Wrong entry; app is going to be terminated.", vbExclamation         Exit Sub     End If

Application.ScreenUpdating = False     Application.Calculation = xlCalculationManual     n = 0     For Each rngArea In rng.Areas         For Each c In rngArea.Cells             b = False             arrSplit = Split(c.Value, csDELIMITER)

For i = LBound(arrSplit) To UBound(arrSplit)

If arrSplit(i) = vFind Then                     arrSplit(i) = vReplace                     n = n + 1                     b = True                 End If             Next i             If b Then                 s = vbNullString                 For i = LBound(arrSplit) To UBound(arrSplit)

s = s & arrSplit(i)

If i <> UBound(arrSplit) Then                         s = s & csDELIMITER                     End If                 Next i                 c.Value = s             End If         Next c     Next rngArea

Application.Calculation = xlCalculationAutomatic     MsgBox "Replaced " & n & " words...", vbInformation End Sub

マクロは、各セル内のすべての単語を(順番に)検索することによって機能します。

単語があなたが探しているものと一致する場合、それは置き換えられます。その後、セルの内容が元に戻されます。

このアプローチには欠点があります。マッチングは非常に文字通りです。これは、「sys」が「sys」と一致するが、「Sys」、「SYS」、または「sys」の後に句読点が続くものとは一致しないことを意味します。 (マクロは単語間の区切り文字としてスペースを使用します。)

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13391)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。