SUBSTITUTE(サブスティチュート) エクセル関数の使い方

SUBSTITUTE(サブスティチュート)は文字列の中から指定した文字を置き換え(置換)します。

・関数SUBSTITUTE(読み方:サブスティチュート)
・書式=SUBSTITUTE(文字列, 検索文字列, 置換文字列, 置換対象)
・内容文字列の中から指定した文字を置換します。全角、半角、大文字、小文字は区別されます。
検索文字列が見つからないと文字列を返します
置換対象は省略できます
使い方
例)=SUBSTITUTE("045-111-2222","045-","(045)")
 結果は (045)111-2222
※文字列は 「"」 で挟む必要があります。セル指定もできます。
置換対象は省略すると文字列すべてを検索します
置換対象に1を指定すると最初に見つけた1つだけを置換します(複数可)

数式を使わなくても置換はできますが元のデータは変更されます。
元のデータを残したい場合などに数式を使います

数式を使わない方法
「ctrl」を押しながら「H」キー(置換だけにH?)を押すと
ポッポアップウインドウが表示されます



「検索する文字列」に検索文字列
「置換後の文字列」に置換文字列を入力します
「すべて置換」を押すとシートの全部が対象になり「置換」を押すと最初の1つが置換されます

「オプション」を押すと細かい設定も可能になります。



数式ではできないセルの色など設定も変更することが可能です


いろいろな使い方例
セルB1のすべての数値を「,」カンマ区切りにする場合
=SUBSTITUTE(B1,"0","0,")
上記のようにすれば「0」が「0,」に置換され、すべての数値を置換すれば、、と思うのですがこの方法だと最後の数字にも「,」が付きます
998765

9,9,8,7,6,5,

最後の「,」はいらないので=LEN()関数と=MID()関数を使います LENで入力された文字を数えてMIDで最後の1文字を切り取ります SUBSTITUTE(B1,"0","0,")
上記が次の検索値になり以下をすべて組み合わせます
SUBSTITUTE(B1,"1","1,")
SUBSTITUTE(B1,"2","2,")
SUBSTITUTE(B1,"3","3,")
SUBSTITUTE(B1,"4","4,")
SUBSTITUTE(B1,"5","5,")
SUBSTITUTE(B1,"6","6,")
SUBSTITUTE(B1,"7","7,")
SUBSTITUTE(B1,"8","8,")
SUBSTITUTE(B1,"9","9,")

上から順番にすべてをB1に張り付けていきます
SUBSTITUTE(B1,"0","0,")
SUBSTITUTE(SUBSTITUTE(B1,"0","0,"),"1","1,")
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,"0","0,"),"1","1,"),"2","2,")
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,"0","0,"),"1","1,"),"2","2,"),"3","3,")
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,"0","0,"),"1","1,"),"2","2,"),"3","3,"),"4","4,")
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,"0","0,"),"1","1,"),"2","2,"),"3","3,"),"4","4,"),"5","5,")
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,"0","0,"),"1","1,"),"2","2,"),"3","3,"),"4","4,"),"5","5,"),"6","6,")
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,"0","0,"),"1","1,"),"2","2,"),"3","3,"),"4","4,"),"5","5,"),"6","6,"),"7","7,")
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,"0","0,"),"1","1,"),"2","2,"),"3","3,"),"4","4,"),"5","5,"),"6","6,"),"7","7,"),"8","8,")
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B1,"0","0,"),"1","1,"),"2","2,"),"3","3,"),"4","4,"),"5","5,"),"6","6,"),"7","7,"),"8","8,"),"9","9,")
1番下が0~9すべてにカンマを付けたSUBSTITUTEです
123456789098

1,2,3,4,5,6,7,8,9,0,9,8,

ここから=LEN()関数と=MID()関数で最後の「,」カンマを取ります
=LEN(上の数式)で文字数を数えます
=MID(文字列,開始位置,文字数)で切り取ります

文字列が上の数式、開始位置は1、LEN(上の数式)-1全部から1引いた数字

組み合わせると
数値をすべて「,」カンマ区切りにする数式の完成です

ながっ。440文字あります。
派手にページからはみ出すので箱に入れました。これで1行です
123456789098

1,2,3,4,5,6,7,8,9,0,9,8
最後の「,」カンマは付きません

ついでに数字をすべて「-」ハイフン区切りにする数式も作ってみました

123456789098

1-2-3-4-5-6-7-8-9-0-9-8


SUBSTITUTE()関数が「ctrl」を押しながら「H」キーより使える長所
「ctrl」+「H」でいいじゃん、と思いますが
「ctrl」+「H」はすべてが対象になります

例えば電話番号
セルD3)045-123-4567
セルD4)045-987-6543
セルD5)045-123-0987

上記を国番号に変換する場合
「ctrl」+「H」だと「0」を「+81-」に置換

セルD3)+81-45-123-4567
セルD4)+81-45-987-6543
セルD5)+81-45-123-+81-987

番号内に含まれる「0」も置き換えられます

SUBSTITUTE()関数は
=SUBSTITUTE(文字列, 検索文字列, 置換文字列, 置換対象)
置換対象に「1」を指定すれば1回だけ置換します(複数指定可)

セルE5)=SUBSTITUTE(D5,"0","+81-", 1)
セルD5)+81-45-123-0987

※注意:セルは書式設定で文字列にしておく必要があります
(エクセルでは最初の「+」は「=」と同じ扱いになり計算されてしまいます)


「~」チルダ問題
「ctrl」を押しながら「H」ではなぜか「~」チルダの文字を検索できません

「~」を「~」に置換しようとすると

置換対象のデータが見つかりません。とエラーになります

これは特定の文字だけで「~」チルダ、「*」アスタリスク、「?」疑問符は検索では見つかりません

「*」アスタリスクと「?」疑問符はワイルドカードとして利用されるので「ctrl」+「H」では検索されません

検索する文字列に「関数*」置換後の文字列を空白にすると
SUBSTITUTE()関数は文字を置換します

SUBSTITUTE()
関数*なので関数と後ろの任意の文字列は空白に置換されすべて消えます

検索する文字列に「関数??」置換後の文字列を空白にすると
SUBSTITUTE()関数は文字を置換します

SUBSTITUTE()字を置換します
関数??なので「関数」と後ろの2文字「は文」が空白に置換され消えます
関数????ならば「関数」と後ろの4文字が空白に置換され消えます
関数???????ならば「関数」と後ろの7文字が空白に置換され消えます

文字の前に「~」チルダを追加することで検索できます

「~」チルダを検索、置換する場合「~~」←2回入力
「*」アスタリスクを検索、置換する場合「~*」←「*」の前に「~」
「?」疑問符を検索、置換する場合「~?」←「?」の前に「~」

他にもあるかもしれないので、そこにあるのに検索できない場合
前に「~」チルダを覚えておくといいかもしれません
※「~」チルダはキーボード右上の方のひらがなの「へ」のキーです


=SUBSTITUTE(文字列, 検索文字列, 置換文字列, 置換対象)
セルB6)=SUBSTITUTE(B4, "~", "~")
SUBSTITUTEなら変換できます

SEARCHTOPAVERAGE
(C) 2024 Digital World