=SUBSTITUTE(A2,"-","")は、A2の文字列からハイフンをすべて取り除きます。SUBSTITUTEは古い文字列を探し、その場所に新しい文字列、ここでは空の文字列を入れます。=SUBSTITUTE(A2,"-",".")なら、ハイフンをそれぞれピリオドに変えます。
| A | B | C | |
|---|---|---|---|
| 1 | Phone | Digits only | With dots |
| 2 | 555-201-3344 | 5552013344 | 555.201.3344 |
| 3 | 555-870-1122 | 5558701122 | 555.870.1122 |
| 4 | 555-433-9001 | 5554339001 | 555.433.9001 |
数字だけが残っても、結果は文字列です。数値が必要なときは前に--を付けます:=--SUBSTITUTE(A2,"-","")。
SUBSTITUTEとREPLACEの違い
=SUBSTITUTE(text, old_text, new_text, [instance_num])
=REPLACE(old_text, start_num, num_chars, new_text)
SUBSTITUTEは内容を探すので、old_text(検索文字列)がどこにあっても構いません。REPLACEは何も探さず、文字を数えてstart_num(開始位置)からnum_chars(文字数)分を上書きします。
| A | B | |
|---|---|---|
| 1 | Text | Result |
| 2 | Report 2025 final | Report 2026 final |
| 3 | Report 2025 final | Report 2026 final |
| 4 | ID-0042 | SKU-0042 |
| 5 | 5551234 | 555-1234 |
- B2とB3は同じ結果になりますが、B3がうまくいくのは年が8文字目から始まっているからにすぎません。文字列が変わっても、SUBSTITUTEは見つけますがREPLACEは見つけません。
- B4は、中身にかかわらず先頭の2文字を
SKUに置き換えます。 - B5は長さに0を指定しています。何も取り除かれないので、REPLACEは3文字目の後にハイフンを挿入します。指定した位置に文字を挿入する定番の方法です。
文字列がわかっているならSUBSTITUTEを、位置がわかっているならREPLACEを使います。位置で編集するときはFINDで位置を求められます。=REPLACE(A2,FIND(" ",A2),1,"_")は最初のスペースを置き換えます。
2番目(n番目)だけを置き換える
SUBSTITUTEの4つ目の引数は、何番目に出てくるものを変えるかを選びます。省略するとすべて変わります:
| A | B | |
|---|---|---|
| 1 | Path | Result |
| 2 | 2026-03-15-final | 2026/03/15/final |
| 3 | 2026-03/15-final | |
| 4 | 2026-03-15 final |
B2はハイフンをすべて変えます。2を指定したB3は2番目のハイフンだけを変えて2026-03/15-finalになり、B4は3番目をスペースに変えます。一致する数より大きい番号を指定すると、何も変わりません。
| A | B | |
|---|---|---|
| 1 | Plan | New name |
| 2 | Basic monthly |
やってみよう: B2で、数式を使ってA2のプラン名のBasicをStandardに置き換えてください。
複数の種類の文字を取り除く
SUBSTITUTEが1回で扱えるold_textは1つです。複数あるときは入れ子にします。それぞれが内側の結果に対して動きます。
| A | B | |
|---|---|---|
| 1 | Phone | Digits |
| 2 | (555) 201-3344 | 5552013344 |
| 3 | (555) 870-1122 | 5558701122 |
内側から順に読みます。(を取り除き、次に)、-、最後にスペースを取り除きます。Microsoft 365では、=REGEXREPLACE(A2,"[^0-9]","")が数字以外のすべての文字を一度に取り除きます。余分なスペースに限るなら、単語の間のスペースを1つ残すTRIMのほうが向いています。
文字や単語が出てくる回数を数える
空の文字列を指定したSUBSTITUTEはすべての出現を取り除くので、減った長さが取り除いた文字の数になります。単語を数えるときは、その単語の長さで割ります:
| A | B | C | |
|---|---|---|---|
| 1 | Text | Commas | "red" appears |
| 2 | red, green, red, blue | 3 | 2 |
| 3 | Red, red, red | 2 | 2 |
C3は3ではなく2を返します。SUBSTITUTEは大文字と小文字を区別するので、Redは取り除かれません。大文字と小文字を問わずに数えるにはSUBSTITUTE(LOWER(A3),"red","")を使います。
| A | B | |
|---|---|---|
| 1 | Tags | Count |
| 2 | excel,text,formulas,tips |
やってみよう: A2のタグはカンマで区切られています。B2で、タグがいくつあるかを数えてください(カンマの数より1つ多くなります)。
よくある間違い: SUBSTITUTEで数値を変える
SUBSTITUTEは数値の文字列に対して動き、結果は文字列です。1050に=SUBSTITUTE(A2,"0","")を使うと文字列の15になり、$1,050.00のような表示形式は無視されます。SUBSTITUTEが読むのは保存されている値1050だからです。数値を変えるには計算を使います。数式を使わずに多くのセルの中の文字列を一度に変えるなら、ホーム > 検索と選択 > 置換(Ctrl+H、MacではControl+H)を使います。「大文字と小文字を区別する」のオプションがあり、その場で置き換えます。
よくある質問
ExcelのSUBSTITUTEとREPLACEの違いは何ですか?
SUBSTITUTEは内容で文字列を探します。=SUBSTITUTE(A2,"old","new")はすべてのoldを変えます。REPLACEは位置で動きます。=REPLACE(A2,5,3,"new")は、中身にかかわらず5文字目から3文字を上書きします。
Excelでセルから特定の文字を削除するには?
空の文字列に置き換えます:=SUBSTITUTE(A2,"-","")はハイフンをすべて取り除きます。複数の文字なら入れ子にします:=SUBSTITUTE(SUBSTITUTE(A2,"(",""),")","")。
セルの中にある文字が何回出てくるか数えるには?
取り除く前と後の長さを比べます。=LEN(A2)-LEN(SUBSTITUTE(A2,",",""))はA2のカンマを数えます。単語なら、その長さで割ります:=(LEN(A2)-LEN(SUBSTITUTE(A2,"red","")))/3。
SUBSTITUTEは大文字と小文字を区別しますか?
区別します。=SUBSTITUTE("Red red","red","blue")はRed blueになります。区別しないようにするには、先に小文字にする=SUBSTITUTE(LOWER(A2),"red","blue")か、既定で大文字と小文字を区別しない「検索と置換」(Ctrl+H)を使います。