Excel(Microsoft Excel)で単語全体のみを置き換える
ゲイリーは、「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に適用されます。