Excelの文字列関数まとめ|抽出・結合・分割・置換を実務シーン別に解説

スポンサーリンク

Excelで「氏名から姓だけ取り出したい」「カンマ区切りのデータを列に分けたい」と悩んだことはありませんか。文字列関数は種類が多く、どれを使えばいいか迷いますよね。

この記事では、抽出・結合・分割・置換の4カテゴリに分けて文字列関数の使い分けを整理しました。実務シーンに合わせて「この作業にはこの関数」がすぐわかる逆引きインデックスも用意しています。

文字列関数の逆引きインデックス【やりたいこと別】

まずは「やりたいこと」から使う関数を探せる一覧表です。

やりたいこと使う関数数式の例
左端からN文字を取り出すLEFT=LEFT(A1,3)
右端からN文字を取り出すRIGHT=RIGHT(A1,4)
途中からN文字を取り出す[[2023-01-02-excel-function-howto-use-midMID]]=MID(A1,2,3)
特定の文字の位置を調べるFIND / SEARCH=FIND("@",A1)
文字数を数える[[2022-03-21-excel-function-howto-use-lenLEN]]=LEN(A1)
文字列をそのまま結合する[[2022-07-24-excel-function-howto-use-concatCONCAT]] / &=A1&B1
区切り文字を入れて結合する[[2022-05-10-excel-function-howto-use-textjoinTEXTJOIN]]=TEXTJOIN(",",TRUE,A1:C1)
区切り文字で列に分割する[[2022-12-22-excel-function-howto-use-textsplitTEXTSPLIT]]=TEXTSPLIT(A1,",")
区切り文字の前だけ取り出す[[2022-12-23-excel-function-howto-use-textbeforeTEXTBEFORE]]=TEXTBEFORE(A1,"@")
区切り文字の後だけ取り出す[[2022-12-24-excel-function-howto-use-textafterTEXTAFTER]]=TEXTAFTER(A1,"@")
特定の文字列を別の文字列に置き換える[[2022-05-02-excel-function-howto-use-substituteSUBSTITUTE]]=SUBSTITUTE(A1,"-","")
位置を指定して文字列を置き換えるREPLACE=REPLACE(A1,1,3,"新")
余分なスペースを除去する[[2022-08-03-excel-function-howto-use-trimTRIM]]=TRIM(A1)
大文字に変換する[[2022-05-05-excel-function-howto-use-upperUPPER]]=UPPER(A1)
小文字に変換する[[2022-05-07-excel-function-howto-use-lowerLOWER]]=LOWER(A1)
先頭だけ大文字にする[[2022-05-09-excel-function-howto-use-properPROPER]]=PROPER(A1)
全角を半角に変換する[[2022-09-02-excel-function-howto-use-ascASC]]=ASC(A1)
数値を指定の表示形式に変換する[[2022-11-15-excel-function-howto-use-textTEXT]]=TEXT(A1,"#,##0")

TIP

このインデックスをブックマークしておくと便利です。「どの関数だっけ?」と迷ったときにすぐ確認できます。

文字列を「抽出」する関数の使い方

文字列の一部だけを取り出すには、LEFT・RIGHT・MID・FIND(SEARCH)を組み合わせます。

LEFT関数 + FIND関数で姓だけ取り出す

氏名リストから姓だけを取り出すケースです。「山田 太郎」のようにスペースで区切られた氏名を想定します。

=LEFT(A1,FIND(" ",A1)-1)

この数式がやっていることはシンプルです。

  1. FIND(" ",A1) でスペースの位置を調べる(例: 3)
  2. スペースの手前までが姓なので -1 する(例: 2)
  3. LEFT(A1,2) で左端から2文字を取り出す(例: 山田)

LEFT関数は「左端から何文字」と決まっている場合にそのまま使えます。たとえば左端から3文字なら次のように書きます。

=LEFT(A1,3)

NOTE

FIND関数は大文字と小文字を区別します。区別せずに検索したい場合は、代わりにSEARCH関数を使ってください。SEARCH関数はワイルドカード(*?)にも対応しています。

RIGHT関数 + LEN関数で名だけ取り出す

今度は名前の方を取り出してみましょう。RIGHT関数で右端から取り出します。

=RIGHT(A1,LEN(A1)-FIND(" ",A1))

取り出す文字数の計算がポイントです。

  1. LEN(A1) で全体の文字数を取得(例: 5)
  2. FIND(" ",A1) でスペースの位置を取得(例: 3)
  3. 全体の文字数からスペースの位置を引く(例: 5-3=2)
  4. RIGHT(A1,2) で右端から2文字を取り出す(例: 太郎)

MID関数で途中の文字列を取り出す

MID関数は「何文字目から何文字」を指定して取り出せます。

5文字目から4文字を取り出す場合:

=MID(A1,5,4)

たとえば社員番号「DEPT-1234-A」から数字部分だけを取り出す場合です。6文字目から4文字で「1234」が得られます。

=MID(A1,6,4)

MID関数は開始位置と文字数が固定の場合に便利です。位置が可変の場合はFIND関数と組み合わせます。

FIND関数とSEARCH関数の違い

どちらも「特定の文字が何文字目にあるか」を返す関数です。

比較項目FINDSEARCH
大文字・小文字区別する区別しない
ワイルドカード使えない* ? が使える
用途完全一致で位置を調べるあいまい検索で位置を調べる

実務では「スペースの位置を調べる」「@の位置を調べる」のような用途が多いため、FIND関数で十分な場面がほとんどです。

M365ならTEXTBEFORE・TEXTAFTERが便利

Microsoft 365をお使いなら、LEFT+FINDの組み合わせを1つの関数で置き換えられます。

スペースの前(姓)を取り出す場合:

=TEXTBEFORE(A1," ")

スペースの後(名)を取り出す場合:

=TEXTAFTER(A1," ")

TEXTBEFORE関数TEXTAFTER関数は区切り文字を指定するだけでOKです。LEFT+FIND+LENの複雑な計算が不要になります。

NOTE

TEXTBEFORE・TEXTAFTER・TEXTSPLITはMicrosoft 365専用の関数です。Excel 2021以前では使用できません。

文字列を「結合」する関数の使い方

複数のセルの値をひとつにまとめるには、&演算子・CONCAT・TEXTJOIN・CONCATENATEを使います。

&演算子でシンプルに結合する

もっとも基本的な結合方法です。

姓と名をスペース区切りで結合する場合:

=A1&" "&B1

セルの数が少ない(2~3個)場合は&演算子がわかりやすいです。ハイフン区切りで3つ結合するならこう書きます。

=A1&"-"&B1&"-"&C1

CONCAT関数でセル範囲を一括結合する

CONCAT関数はセル範囲をまるごと結合できます。

A1からD1まで一括結合する場合:

=CONCAT(A1:D1)

&演算子と違い、範囲指定ができるのがメリットです。ただし区切り文字を自動で入れる機能はありません。

TEXTJOIN関数で区切り文字付きの結合をする

TEXTJOIN関数は区切り文字を指定して結合できます。

=TEXTJOIN(",",TRUE,A1:D1)

各引数の意味はこちらです。

  • 第1引数: 区切り文字(カンマ、スペース、ハイフンなど)
  • 第2引数: 空セルを無視するか(TRUE = 無視する)
  • 第3引数: 結合するセル範囲

空セルを無視してくれるのが大きなポイントです。たとえばA1~D1のうちC1が空白でも、余計な区切り文字が入りません。

A1=東京, B1=大阪, C1=(空白), D1=福岡 の場合で比べてみましょう。

数式結果
=TEXTJOIN(",",TRUE,A1:D1)東京,大阪,福岡
=TEXTJOIN(",",FALSE,A1:D1)東京,大阪,,福岡

TRUEにすると空セルのC1が飛ばされ、余計なカンマが入りません。

結合関数の選び方

比較項目&[[2022-07-24-excel-function-howto-use-concatCONCAT]][[2022-06-30-excel-function-howto-use-concatenateCONCATENATE]][[2022-05-10-excel-function-howto-use-textjoinTEXTJOIN]]
範囲指定不可可能不可可能
区切り文字手動で挿入なしなし自動挿入
空セル無視不可不可不可可能
対応バージョン全バージョンExcel 2019以降全バージョンExcel 2019以降
おすすめ度2~3個の結合範囲一括旧環境向け区切り文字付き結合

TIP

CONCATENATEは互換性のために残されている旧関数です。新しい環境ではCONCAT関数を使ってください。詳しくは「CONCAT関数の使い方」で解説しています。

文字列を「分割」する関数の使い方

1つのセルに入っている文字列を複数のセルに分けたい場面は多いです。TEXTSPLIT関数やLEFT+FIND関数の組み合わせで対応できます。

TEXTSPLIT関数でカンマ区切りデータを列に分ける

TEXTSPLIT関数はM365で追加された強力な関数です。

=TEXTSPLIT(A1,",")

カンマ区切りの「東京,大阪,名古屋,福岡」を入力すると、4つのセルに自動で分割されます。スピル機能で横方向に展開されるので、数式は1つだけでOKです。

行方向に分割したい場合は、第3引数を使います。

第3引数に区切り文字を指定すると行方向に分割されます。

=TEXTSPLIT(A1,,",")

複数の区切り文字を同時に指定することも可能です。カンマとセミコロンの両方で分割する場合はこう書きます。

=TEXTSPLIT(A1,{",",";"})

TEXTSPLIT が使えない環境での分割テクニック

Excel 2021以前ではTEXTSPLIT関数が使えません。その場合はLEFT+FIND+MID+LENを組み合わせます。

1つ目の要素(カンマの前)を取り出す場合:

=LEFT(A1,FIND(",",A1)-1)

2つ目の要素(1つ目のカンマ~2つ目のカンマの間)を取り出す場合:

=MID(A1,FIND(",",A1)+1,FIND(",",A1,FIND(",",A1)+1)-FIND(",",A1)-1)

ちょっと複雑に見えますが、やっていることはシンプルです。

  1. 1つ目のカンマの位置を調べる
  2. 2つ目のカンマの位置を調べる(FINDの第3引数で開始位置を指定)
  3. 2つの位置の間の文字列をMIDで取り出す

NOTE

要素数が多い場合は数式が非常に複雑になります。M365環境であればTEXTSPLIT関数の利用を強くおすすめします。

「区切り位置」機能との比較

Excelには関数以外にも「区切り位置」というメニュー機能があります。

比較項目TEXTSPLIT関数区切り位置(メニュー)
操作方法数式を入力データ > 区切り位置
元データ保持される上書きされる
自動更新元データが変わると自動反映手動で再実行が必要
対応バージョンMicrosoft 365全バージョン
大量データ数式1つで対応可毎回手動操作

元データを残しつつ自動更新したい場合はTEXTSPLIT関数が圧倒的に便利です。一度きりの変換なら区切り位置機能でも十分対応できます。

文字列を「置換・整形」する関数の使い方

文字列を別の文字列に置き換えたり、余分なスペースを取り除く場面で活躍します。SUBSTITUTE・REPLACE・TRIM関数が代表的です。

SUBSTITUTE関数で特定の文字列を置き換える

SUBSTITUTE関数は「この文字列をこの文字列に変える」という置換に使います。

住所から「東京都」を除く場合:

=SUBSTITUTE(A1,"東京都","")

電話番号のハイフンを除去する場合:

=SUBSTITUTE(A1,"-","")

第4引数を指定すると、何番目の出現だけを置換できます。

1番目のハイフンだけをスラッシュに変換する場合:

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

REPLACE関数で位置を指定して置き換える

REPLACE関数は「何文字目から何文字」を指定して置き換えます。

1文字目から3文字を「ABC」に置換する場合:

=REPLACE(A1,1,3,"ABC")

SUBSTITUTEとREPLACEの使い分けはこちらです。

比較項目[[2022-05-02-excel-function-howto-use-substituteSUBSTITUTE]]REPLACE
指定方法置き換える文字列位置と文字数
用途「この文字を消したい」「何文字目を変えたい」
全出現の置換可能(第4引数で制御)1箇所のみ
文字列が不明な場合使えない位置さえわかればOK

実務では「ハイフンを消す」「都道府県を除く」のようにSUBSTITUTE関数を使う場面が多いです。

TRIM関数でスペースを整える

TRIM関数は文字列の前後のスペースを除去し、単語間のスペースを1つに統一します。

=TRIM(A1)

たとえば「 山田 太郎 」が「山田 太郎」になります。データのコピー&ペーストで余分なスペースが入ってしまったときに重宝します。

TIP

TRIM関数は半角スペースのみ対応です。全角スペースを除去したい場合は =SUBSTITUTE(A1," ","") で全角スペースを空文字に置換してからTRIMを適用してください。詳しくは「ノーブレークスペースの対処法」も参考になります。

大文字・小文字・全角・半角の変換

文字の変換系関数をまとめて紹介します。

関数変換内容数式の例結果
[[2022-05-05-excel-function-howto-use-upperUPPER]]全部大文字=UPPER("abc")ABC
[[2022-05-07-excel-function-howto-use-lowerLOWER]]全部小文字=LOWER("ABC")abc
[[2022-05-09-excel-function-howto-use-properPROPER]]先頭だけ大文字=PROPER("john smith")John Smith
[[2022-09-02-excel-function-howto-use-ascASC]]全角→半角=ASC("ABC")ABC
JIS半角→全角=JIS("ABC")ABC

商品コードや顧客名の表記を統一するときに使います。EXACT関数で大文字小文字の一致を確認してから変換するのも効果的です。

新旧関数の対比表で文字列関数を整理

ここまで紹介した関数の中には、新旧の関係にあるものがあります。環境に合わせて選んでください。

やりたいこと旧関数・旧手法新関数(M365)新関数のメリット
文字列の結合[[2022-06-30-excel-function-howto-use-concatenateCONCATENATE]][[2022-07-24-excel-function-howto-use-concatCONCAT]]セル範囲を指定可能
区切り文字付き結合&で手動挿入[[2022-05-10-excel-function-howto-use-textjoinTEXTJOIN]]空セル無視が可能
区切り文字で分割区切り位置(メニュー)[[2022-12-22-excel-function-howto-use-textsplitTEXTSPLIT]]数式で自動更新
区切り文字の前を取得LEFT + FIND[[2022-12-23-excel-function-howto-use-textbeforeTEXTBEFORE]]数式がシンプル
区切り文字の後を取得RIGHT + LEN + FIND[[2022-12-24-excel-function-howto-use-textafterTEXTAFTER]]数式がシンプル

TIP

新関数が使えるかわからない場合は、セルに =TEXTSPLIT("a,b",",") と入力して試してみてください。#NAME? エラーが出たらお使いのExcelでは未対応です。

文字列関数でよくあるエラーと対処法

文字列関数を使っていると遭遇しやすいエラーをまとめました。

エラー原因対処法
#VALUE!FIND/SEARCHで検索文字が見つからない[[2022-01-16-excel-function-howto-use-ifIF関数]]やISERRORで「見つからない場合」の処理を追加する
#NAME?関数名のスペルミス、または未対応バージョン関数名を確認する。TEXTSPLIT等はM365専用
意図しない結合結果数値がそのまま結合されて桁が変わる[[2022-11-15-excel-function-howto-use-textTEXT関数]]で書式指定してから結合する
スペースが残る全角スペースがTRIMで除去できない=SUBSTITUTE(A1," ","") で全角スペースを先に除去
分割結果がずれる区切り文字が想定と違う(全角カンマなど)[[2022-03-21-excel-function-howto-use-lenLEN関数]]で文字数を確認し、区切り文字を特定する

まとめ

Excelの文字列関数を4つのカテゴリで整理しました。

カテゴリ主な関数代表的な使い方
抽出LEFT, RIGHT, [[2023-01-02-excel-function-howto-use-midMID]], FIND氏名から姓・名を取り出す
結合[[2022-07-24-excel-function-howto-use-concatCONCAT]], [[2022-05-10-excel-function-howto-use-textjoinTEXTJOIN]], &名前と部署を結合する
分割[[2022-12-22-excel-function-howto-use-textsplitTEXTSPLIT]], LEFT+FINDカンマ区切りデータを列に分ける
置換・整形[[2022-05-02-excel-function-howto-use-substituteSUBSTITUTE]], [[2022-08-03-excel-function-howto-use-trimTRIM]]住所から都道府県を除く

迷ったら冒頭の逆引きインデックスに戻ってみてください。「やりたいこと」から関数を選ぶのが一番確実です。

M365環境であれば、TEXTSPLIT・TEXTBEFORE・TEXTAFTERといった新関数もぜひ試してみてください。数式がぐっとシンプルになりますよ。

関連記事

抽出系

結合系

分割系

置換・整形系

変換系

その他

タイトルとURLをコピーしました