概要
「’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)
動きはこうです。
- A2 の中の「-」が何回出てくるかを左から数える
- 2回目の「-」だけを「/」に置き換える
- 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回目」に慣れておくと、
「同じ文字が何回も出てくるけど、ここだけ変えたい」という実務でよくある細かい要望を、
数式だけでスマートにコントロールできるようになります。
