Excel関数 逆引き集 | n回目のみ置換 → SUBSTITUTE(…,回数)

Excel
スポンサーリンク

概要

「’2024-01-05′ の2つ目のハイフンだけ / に変えたい」
「’A,B,C,D’ の3つ目のカンマだけ削除したい」
「同じ文字が何回も出てくるけど、“n回目だけ”置換したい」

こういうときに使うのが、SUBSTITUTE の第4引数(回数指定)です。
普通の SUBSTITUTE は「全部置き換え」ですが、4番目の引数を使うと
“n回目に出てくるものだけ”置換できます。


SUBSTITUTE のおさらいと「回数」付きの形

基本形(全部置換)

まず、通常の SUBSTITUTE から。

=SUBSTITUTE(文字列, 置き換え前, 置き換え後)

この形だと、「文字列の中の 置き換え前 を“全部” 置き換え後 に変える」です。

例:A2 が「2024-01-05」のとき

=SUBSTITUTE(A2, "-", "/")

結果:「2024/01/05」
2つある「-」が、両方とも「/」に変わります。


n回目だけ置換する形

n回目だけ置き換えたいときに使うのが、第4引数です。

=SUBSTITUTE(文字列, 置き換え前, 置き換え後, 回数)

ここでの「回数」は、

  • 文字列の中に出てくる「置き換え前」が
  • 左から何回目に出てきたものか

を指定します。

例:A2 が「2024-01-05」のとき
2つ目の「-」だけを「/」に変えたい場合はこうです。

=SUBSTITUTE(A2, "-", "/", 2)

結果:「2024-01/05」
1つ目の「-」はそのまま、2つ目だけが「/」になります。


基本パターン:日付の一部だけ区切りを変える

例1:2つ目のハイフンだけ / にする

A2 に「2024-01-05」が入っているとします。
このうち、2つ目の「-」だけ「/」に変えたい場合。

式は次のようになります。

=SUBSTITUTE(A2, "-", "/", 2)

動きはこうです。

  1. A2 の中の「-」が何回出てくるかを左から数える
  2. 2回目の「-」だけを「/」に置き換える
  3. 1回目の「-」はそのまま残る

結果:「2024-01/05」


例2:1つ目のハイフンだけ / にする

同じ値「2024-01-05」で、今度は1つ目だけを変えたい場合。

=SUBSTITUTE(A2, "-", "/", 1)

結果:「2024/01-05」


n回目だけ削除(空文字に置き換える)

「置き換え後」を空文字 "" にすれば、
“n回目だけ削除” という使い方もできます。

例3:3つ目のカンマだけ削除する

A2 に「A,B,C,D」という文字列が入っているとします。
3つあるカンマのうち、3つ目だけ削除したい場合。

=SUBSTITUTE(A2, ",", "", 3)

結果:「A,B,CD」

1つ目・2つ目のカンマはそのまま残り、
3つ目だけが消えます。


応用:区切り文字の“特定の区切りだけ”変えたい

例4:CSV風文字列の“最後の区切りだけ”変える

例えば、A2 が「A,B,C,D」のとき、
最後のカンマだけを「 / 」に変えたいケースを考えます。

カンマの数が毎回同じで、「4つある」と分かっているならこう書けます。

=SUBSTITUTE(A2, ",", " / ", 3)

「3回目のカンマだけ置換」ということです。
結果:「A,B, / D」

もし「何個あるか分からないが“最後の1個”だけ変えたい」という場合は、
文字数を数えて工夫する必要があり、少し上級編になります。
まずは「n回目を指定できる」という感覚を持っておけば十分です。


応用:同じ文字がたくさんある文章の一部だけ直したい

例5:文中の “※” の2個目だけ修正マークに変える

A2 に、こんな文章が入っているとします。

「※注意事項※この部分は修正済みです※」

このうち、2個目の「※」だけを「(修正)」に変えたいとき。

=SUBSTITUTE(A2, "※", "(修正)", 2)

結果:

「※注意事項(修正)この部分は修正済みです※」

1個目・3個目の「※」は元のまま、
2個目だけが「(修正)」になります。


応用:n回目以降をまとめて変えたい場合の考え方

SUBSTITUTE の「回数」引数は「その1回だけ」に効きます。
「3回目以降全部を変えたい」といった場合は、
何度かネスト(SUBSTITUTE の中に SUBSTITUTE)したり、
別の方法を考えます。

ただし、プログラミング初心者のうちは、

  • 「全部置換」
  • 「n回目だけ置換」

の2パターンを使いこなせれば十分です。


例題

問題1

A2 に「2024-01-05」という文字列が入っています。
このうち 2つ目の「-」だけを「/」に置き換えて、「2024-01/05」と表示したいです。
SUBSTITUTE を使った式を書いてください。

=SUBSTITUTE(A2, "-", "/", 2)

問題2

A2 に「2024-01-05」という文字列が入っています。
1つ目の「-」だけを「/」に置き換えて、「2024/01-05」と表示したいです。
SUBSTITUTE を使った式を書いてください。

=SUBSTITUTE(A2, "-", "/", 1)

問題3

A2 に「A,B,C,D」という文字列が入っています。
3つ目のカンマ「,」だけを削除して、「A,B,CD」と表示したいです。
SUBSTITUTE を使った式を書いてください。

=SUBSTITUTE(A2, ",", "", 3)

問題4

A2 に「※注意事項※この部分は修正済みです※」という文字列が入っています。
2つ目の「※」だけを「(修正)」に置き換えたいです。
SUBSTITUTE を使った式を書いてください。

=SUBSTITUTE(A2, "※", "(修正)", 2)

問題5

A2 に「aaa-aaa-aaa」という文字列が入っています。
2つ目の「aaa」だけ「BBB」に変えて、「aaa-BBB-aaa」と表示したいです。
SUBSTITUTE を使った式を書いてください。
(ヒント:置き換え前は「aaa」、回数は 2)

=SUBSTITUTE(A2, "aaa", "BBB", 2)

「n回目のみ置換」の本質は、この1行に集約されます。

=SUBSTITUTE(文字列, 置き換え前, 置き換え後, n回目)

この「第4引数=n回目」に慣れておくと、
「同じ文字が何回も出てくるけど、ここだけ変えたい」という実務でよくある細かい要望を、
数式だけでスマートにコントロールできるようになります。

Excel
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました