ExcelのREPLACE関数とSUBSTITUTE関数を使う - 計算式の例

  • これを共有
Michael Brown

ExcelのREPLACE関数とSUBSTITUTE関数を使用例とともに解説します。 REPLACE関数を文字列、数値、日付に使用する方法、1つの数式内に複数のREPLACE関数やSUBSTITUTE関数を入れ子にする方法についてご覧ください。

先週は、ExcelのワークシートでFIND関数とSEARCH関数を使う方法をご紹介しましたが、今日は、セル内のテキストを場所によって置き換えたり、ある文字列を内容によって別の文字列に置き換えるための2つの関数について詳しく見ていきましょう。 お察しの通り、ExcelのREPLACEとSUBSTITUTE関数についてお話しします。

    エクセルREPLACE関数

    ExcelのREPLACE関数を使うと、文字列中の1文字または数文字を別の文字または文字の集合に置き換えることができます。

    REPLACE(old_text, start_num, num_chars, new_text)

    ご覧のように、ExcelのREPLACE関数には4つの引数があり、そのすべてが必須です。

    • 古いテキスト - 文字を置き換える元のテキスト(または元のテキストがあるセルへの参照)を指定します。
    • 開始番号 - old_textの中で置き換えたい最初の文字の位置。
    • 数字(Num_chars - 置き換えたい文字の数を指定します。
    • 新規テキスト - を置換テキストとする。

    例えば、""の部分を変更するには 太陽 " から " 息子 "の場合、以下の式で計算できます。

    =REPLACE("sun", 2, 1, "o")

    また、元の単語をあるセル、例えばA2に置くと、old_textの引数に対応するセル参照を与えることができます。

    =REPLACE(A2, 2, 1, "o")

    注意:引数start_numまたはnum_charsが負または数字以外の場合、Excelの置換式では#VALUE!

    ExcelのREPLACE関数を数値で使用する

    ExcelのREPLACE関数は、テキスト文字列を扱うために設計されています。 もちろん、テキスト文字列の一部である数値文字を置換する場合などにも使用できます。

    =replace(a2, 7, 4, "2016")

    2016 "をダブルクォーテーションで囲むのは、通常のテキスト値と同じです。

    同様に、数字内の1桁または複数桁を置き換えることができます。 たとえば、以下のようになります。

    =replace(a4, 4, 4, "6")

    そして、ここでも置換値をダブルクォート("6")で囲む必要があります。

    注:Excel の REPLACE 計算式は、常に テキスト文字列 上のスクリーンショットでは、B2のテキスト値が左寄せになっていることに注目し、A2の右寄せの元の数値と比較してください。 また、テキスト値であるため、1を掛けるなどして数値に戻さないと他の計算で使用することができません(「テキストから数値への変換方法」で説明している他の方法による)。

    ExcelのREPLACE関数を日付で使用する

    REPLACE関数は、文字列を返すことを除けば、数字に対して正常に動作します。 Excelの内部システムでは、日付は数字として格納されていることを思い出して、日付に対していくつかの置換式を使用してみてください。 結果は非常に恥ずかしいものになるでしょう。

    例えば、A2に1-Oct-14のような日付があり、それを" 10月 " から " ノヴ 「そこで、セルA2の4文字目から始まる3文字を置換する数式 REPLACE(A2, 4, 3, "Nov") を書いてみると...次のような結果が得られました。

    なぜかというと、「01-Oct-14」は日付を表すシリアル番号(41913)を視覚的に表現しているだけだからです。 そこで、今回の置換式では、上記のシリアル番号の下3桁を""に変更します。 ノヴ "と入力し、テキスト文字列 "419Nov "を返します。

    ExcelのREPLACE関数で日付を正しく扱うには、まずTEXT関数や「Excelで日付をテキストに変換する方法」で紹介した他の方法で日付をテキスト文字列に変換します。 あるいは、REPLACE関数のold_text引数にTEXT関数を直接埋め込むこともできます。

    =REPLACE(TEXT(A2, "dd-mmm-yy"), 4, 3, "11月")

    上記の計算式の結果を覚えておいてください。 テキスト文字列 もし、テキスト文字列ではなく、日付が必要な場合は、DATEVALUE関数を使用して、ExcelのREPLACE関数が返す値を日付に戻してください。

    =DATEVALUE(REPLACE(TEXT(A2, "dd-mmm-yy"), 4, 3, "Nov"))。

    REPLACE関数を入れ子にして、セル内の複数の置換を行う。

    同じセル内で複数の置換を行う必要がある場合がよくあります。 もちろん、1回の置換を行い、中間結果を別の列に出力してから、再度REPLACE関数を使用することもできます。 しかし、より優れた、より専門的な方法として ネストしたREPLACE関数 ここでいう「入れ子」とは、ある関数を別の関数の中に配置することを意味します。

    例えば、A列に「123456789」という電話番号のリストがあり、ハイフンを入れて電話番号らしくしたいとします。 つまり、「123456789」を「123-456-789」にすることが目的です。

    最初のハイフンを挿入するのは簡単で、通常のExcelの置換式で ゼロ文字 をハイフン付きにする、つまりセルの4番目の位置にハイフンを追加する。

    =replace(a2,4,0,"-")

    上記のReplace式の結果は、以下のようになります。

    さて、次にハイフンをもう一つ8番目の位置に挿入する必要があります。 これを行うには、上記の数式を別のExcel REPLACE関数内に配置します。 より正確には、この数式を次のような場所に埋め込みます。 古文 の引数を指定し、2つ目のREPLACE関数がセルA2の値ではなく、1つ目のREPLACEが返す値を処理するようにします。

    =REPLACE(REPLACE(A2,4,0,"-"),8,0,"-")

    その結果、希望の書式で電話番号を取得することができます。

    同様に、REPLACE関数を入れ子にして、必要に応じてフォワードスラッシュ(/)を追加することで、テキスト文字列を日付のように見せることができます。

    =(replace(a2,3,0,"/"),6,0,"/"))です。

    さらに、上記のREPLACE式をDATEVALUE関数でラップすることで、テキスト文字列を実際の日付に変換することができます。

    =datevalue(replace(a2,3,0,"/"),6,0,"/"))

    また、当然のことながら、1つの数式内でネストできる関数の数に制限はありません(Excel 2010、2013、2016の最新バージョンでは、1つの数式内で最大8192文字、最大64個のネストした関数が可能です)。

    例えば、3つのREPLACE関数を入れ子にして、A2の数字を日付や時刻のように表示させることができます。

    =replace(replace(a2,3,0,"/") ,6,0,"/"), 9,0,"""), 12,0,":")

    各セルの異なる位置に表示される文字列の置き換え

    ここまでの例では、似たような値を扱い、各セルの同じ位置で置換を行ってきました。 しかし、現実の作業はもっと複雑なことがよくあります。 ワークシートでは、置換される文字が必ずしも各セルの同じ位置にあるとは限らないので はじをさがす 次の例では、この点について説明します。

    A列に電子メールアドレスのリストがあり、ある会社の名前が「ABC」から例えば「BCA」に変わったとします。 そこで、それに応じてすべてのクライアントの電子メールアドレスを更新する必要があります。

    しかし、問題は取引先名の長さが異なるため、会社名の開始位置を正確に指定できないことです。 つまり、ExcelのREPLACE関数の引数start_numにどんな値を与えればいいのかがわかりません。 それを調べるために、ExcelのFIND関数で「@abc」という文字列の最初の文字位置を調べてみましょう。

    =FIND("@abc",A2)

    そして、REPLACE式のstart_numの引数に上記のFIND関数を指定します。

    =REPLACE(A2, FIND("@abc",A2), 4, "@bca")

    ヒント:Excelの検索と置換の式に「@」を含めるのは、メールアドレスの名前の部分が誤って置換されるのを避けるためです。 もちろん、そのような一致が起こる可能性は非常に低いのですが、それでも安全側にいたいという場合もあります。

    次のスクリーンショットにあるように、この数式は古いテキストを見つけて新しいテキストに置き換えることには問題がありません。 しかし、置き換えられるテキスト文字列が見つからない場合、数式は#VALUE!というエラーを返します。

    そこで、FIND & REPLACE 式を IFERROR 関数で囲んでみましょう。

    =IFERROR(REPLACE(A2, FIND("@abc",A2), 4, "@bca"),A2)

    そして、この改良された方式は、完璧に機能するのですね。

    REPLACE関数のもう一つの実用的な使い方は、セルの最初の文字を大文字にすることです。 名前や製品などのリストを扱うときは、上記のリンク先の数式を使って、最初の文字を大文字に変更することができます。

    ヒント:元のデータで置換を行う場合は、ExcelのFINDとREPLACEダイアログを使用すると簡単です。

    エクセル SUBSTITUTE関数

    ExcelのSUBSTITUTE関数は、指定された文字または文字列の1つまたは複数のインスタンスを、指定された文字に置き換えます。

    ExcelのSUBSTITUTE関数の構文は次のとおりです。

    SUBSTITUTE(text,old_text,new_text,[instance_num])。

    最初の3つの引数は必須で、最後の1つはオプションである。

    • テキスト - 文字を置換する元のテキスト。 テスト文字列、セル参照、または別の式の結果として指定できます。
    • 古いテキスト - 置き換えたい文字を入力します。
    • 新規テキスト - old_text を置き換える新しい文字。
    • インスタンス番号 - 省略した場合は、古いテキストの出現箇所すべてが新しいテキストに変更されます。

    例えば、以下の数式はすべてセル A2 の "1" を "2" に置き換えますが、最後の引数にどの数字を与えるかによって異なる結果を返します。

    =substitute(a2, "1", "2", 1) - 最初に出現する "1 "を "2 "に置き換える。

    =substitute(a2, "1", "2", 2) - 2番目に出現する "1 "を "2 "に置き換える。

    =substitute(a2, "1", "2") - 1 "を "2 "に置き換えます。

    実際には、SUBSTITUTE関数はセルから不要な文字を削除するためにも使用されます。 実際の例については、こちらをご覧ください。

    • 文字列から文字や単語を削除する方法
    • セルから不要な文字を削除する方法

    注)ExcelのSUBSTITUTE関数は ケースセンシティブ 例えば、次の数式はセル A2 の大文字「X」を「Y」に置き換えますが、小文字「x」は置き換わりません。

    複数の値を1つの数式で代用する(ネストしたSUBSTITUTE)

    ExcelのREPLACE関数と同様に、1つの数式内に複数のSUBSTITUTE関数を入れ子にして、一度に複数の置換を行う、つまり、1つの数式で複数の文字や部分文字列を置換することが可能です。

    のようなテキスト文字列があるとします。 PR1、ML1、T1 ここで、「PR」は「プロジェクト」、「ML」は「マイルストーン」、「T」は「タスク」を意味します。 この3つのコードをフルネームで置き換えるには、3種類のSUBSTITUTE式を記述すればよいのです。

    =SUBSTITUTE(A2, "PR", "プロジェクト")

    =SUBSTITUTE(A2, "ML", "Milestone ")

    =SUBSTITUTE(A2, "T", "タスク")

    そして、それらを互いに入れ子にしていく。

    =SUBSTITUTE(SUBSTITUTE(A2, "PR", "Project "), "ML", "Milestone "), "T", "Task ")

    読みやすくするために、各 new_text 引数の末尾にスペースを追加していることに注意してください。

    複数の値を一度に置換する他の方法については、「Excelで大量の検索と置換を行う方法」を参照してください。

    ExcelのREPLACEとExcelのSUBSTITUTEの比較

    ExcelのREPLACE関数とSUBSTITUTE関数は、文字列を入れ替えるという点で非常によく似ています。 この2つの関数の違いは、次のとおりです。

    • SUBSTITUTE は、1 つまたは複数を置き換えます。 インスタンス そのため、置換する文字列がわかっている場合は、ExcelのSUBSTITUTE関数を使用します。
    • REPLACEは、指定した文字列を変更します。 位置 そのため、置換する文字の位置がわかっている場合は、ExcelのREPLACE関数を使用します。
    • Excel の SUBSTITUTE 関数では、オプションのパラメータ (instance_num) を追加して、どの 発生 のold_textをnew_textに変更する必要があります。

    以上、ExcelのSUBSTITUTE関数とREPLACE関数の使い方でした。 これらの例が、あなたの課題を解決するのに役立つことを願っています。 読んでくださってありがとうございました!また来週のブログでお会いしましょう。

    練習用ワークブックをダウンロードする

    REPLACEとSUBSTITUTEの計算式の例(.xlsxファイル)

    Michael Brown は、ソフトウェア ツールを使用して複雑なプロセスを簡素化することに情熱を注ぐ熱心なテクノロジー愛好家です。テクノロジー業界で 10 年以上の経験があり、Microsoft Excel と Outlook、さらに Google Sheets と Docs のスキルを磨いてきました。 Michael のブログは、彼の知識と専門知識を他の人と共有することに特化しており、生産性と効率を向上させるためのわかりやすいヒントとチュートリアルを提供しています。経験豊富なプロフェッショナルであろうと初心者であろうと、Michael のブログでは、これらの重要なソフトウェア ツールを最大限に活用するための貴重な洞察と実践的なアドバイスを提供しています。