区切り文字の前後の文字列を取り出すTEXTBEFORE関数・TEXTAFTER関数の使い方:Excel関数


スポンサードリンク

作成:2022/9/2 ,更新更新:2023/2/26

区切り文字の前の文字列を取り出す
 テキスト ビフォア
=TEXTBEFORE(text,delimiter,[instance_num],[match_mode],[match_end],[if_not_found])

TEXTBEFORE関数・TEXTAFTER関数がExcel for Microsoft 365 で使用することができるようになりました。(2022/9/2に確認しました)

TEXTBEFORE関数の引数

関数の引数は現時点では英語表記になっています。

TEXTBEFORE関数の引数
引数 意味
text
文字列
必須 検索対象のテキスト
delimiter
区切り文字
必須 抽出する前のポイントをマークするテキスト
区切り文字
instance_num
区切り位置
省略可 区切り文字が複数ある時、前からの順番
既定では、instance_num = 1 です。
負の数を指定すると、テキストの末尾から検索が開始します。
match_mode
一致モード
省略可 テキスト検索で大文字と小文字を区別するかどうかを決定します
0または省略:大文字と小文字を区別します。
1:大文字と小文字を区別しません
match_end
末端で一致する
省略可 テキストの末尾を区切り記号として扱います
0または省略:一致して終了しない
1:一致して終了
if_not_found
見つからないとき
省略可 一致するものが見つからない場合に返される値。
既定では、#N/A が返されます

【使用例】 もっとも一般的な例で・・・TEXTBEFORE関数で姓を取り出すことができます。
区切り文字に " "(半角のスペース)を設定して、半角スペースより前の文字列を取り出します。
C2セルに =TEXTBEFORE(B2:B7," ") と入力します。


区切り文字が半角スペースと全角スペースと混在している場合は、区切り文字に2つを指定します。
=TEXTBEFORE(B2:B7," ") では 半角のスペースを区切り文字に設定しています。
半角のスペースがない文字列(4行目と5行目)ではエラー #N/A が返されます。


=TEXTBEFORE(B2:B7,{" "," "}) と全角スペースも併せて指定することができます。

TEXTBEFORE関数の引数のinstance_numを指定する

区切り文字が複数ある場合、何番目の区切り文字で文字列を取り出すかを指定することができます。
=TEXTBEFORE(B2,"-",3) とすると、3つ目の"-"より前の文字列を取り出すことができます。

区切り位置の順番を負の値で指定すると、下図のように後ろから区切り文字の位置を検索しています。

TEXTBEFORE関数の引数のmatch_modeを指定する

テキスト検索で大文字と小文字を区別するかどうかを決定します
0または省略:大文字と小文字を区別します。
1:大文字と小文字を区別しません
区切り文字に d を指定していますので、引数の match_mode に 0を指定すると、大文字と小文字を区別しますので、小文字の d は見つからないので #N/A となります。
引数の match_mode に 1 を指定すると、大文字と小文字の区別をしないので 大文字のDより前の文字列が抽出されます。

TEXTBEFORE関数の引数のmatch_endを指定する

ヘルプには以下のように書かれているのですが?
「テキストの末尾を区切り記号として扱います。 既定では、テキストは完全一致です。 省略可能です。 次のいずれかを入力します。
0:区切り記号をテキストの末尾に一致させないでください。
1: 区切り記号をテキストの末尾に一致させてください。」
TEXTBEFORE関数の使い方7

match_endは下図のようなヒントが表示されます。
TEXTBEFORE関数の使い方8
0:区切り記号に一致が見つからなかった場合は、#N/Aを返します

TEXTBEFORE関数の使い方9
1:区切り記号がテキストの末尾に一致させる
といったヒントが表示されます。

=TEXTBEFORE(B2,"z",,,0) と区切り文字に対象の文字列に含まれていない 「z」を指定しています。
match_endに 0 を指定すると、区切り文字がテキスト内に無いので、#N/A が返されている。
match_endに 1 を指定すると、区切り文字がテキスト内に無いのでテキストの全てが表示される。
といったことかな?・・・といった感じです。さて、この解釈があっているのかは不明です。

TEXTBEFORE関数の引数のif_not_foundを指定する

=TEXTBEFORE(B2:B7," ") では 半角のスペースを区切り文字に設定しています。
半角のスペースがない文字列(4行目と5行目)ではエラー #N/A が返されます。

一致するものが見つからない場合に表示されるエラー #N/A を "-"(ハイフン)に置き換えたいときは、
=TEXTBEFORE(B2:B7," ",,,,"-") と引数「if_not_found」を指定します。

区切り文字の前の文字列を取り出す
 テキスト アフター
=TEXTAFTER(text,delimiter,[instance_num],[match_mode],[match_end],[if_not_found])

TEXTAFTER関数の引数

関数の引数は現時点では英語表記になっています。

TEXTAFTER関数の引数
引数 意味
text
テキスト
必須 検索対象のテキスト
delimiter
区切り文字
必須 抽出する前のポイントをマークするテキスト
区切り文字
instance_num
区切り位置
省略可 区切り文字が複数ある時、前からの順番
既定では、instance_num = 1 です。
負の数を指定すると、テキストの末尾から検索が開始します。
match_mode
一致モード
省略可 テキスト検索で大文字と小文字を区別するかどうかを決定します
0または省略:大文字と小文字を区別します。
1:大文字と小文字を区別しません
match_end
末端で一致する
省略可 テキストの末尾を区切り記号として扱います
0または省略:一致して終了しない
1:一致して終了
if_not_found
見つからないとき
省略可 一致するものが見つからない場合に返される値。
既定では、#N/A が返されます

【使用例】もっとも一般的な例で・・・TEXTAFTER関数で姓と名を分けて取り出すことができます。
名は区切り文字に ” ”(半角のスペース)を設定して、半角スペースより後の文字列を取り出します。
C2セルに =TEXTAFTER(B2:B7," ") と入力します。

TEXTAFTER関数の引数のinstance_numを指定する

区切り文字が複数ある場合、何番目の区切り文字で文字列を取り出すかを指定することができます。
=TEXTAFTER(B2,"-",3)  とすると、3つ目の"-"より後の文字列を取り出すことができます。

区切り位置の順番を負の値で指定すると、下図のように後ろから区切り文字の位置を検索しています。
TEXTAFTER関数ではその区切り文字の後ろの文字列を取り出します。

TEXTAFTER関数の引数のmatch_modeを指定する

テキスト検索で大文字と小文字を区別するかどうかを決定します
0または省略:大文字と小文字を区別します。
1:大文字と小文字を区別しません

区切り文字に d を指定していますので、引数の match_mode に0を指定すると、大文字と小文字を区別しますので、小文字の d は見つからないので #N/A となります。
引数の match_mode に 1 を指定すると、大文字と小文字の区別をしないので 大文字のDより後の文字列が抽出されます。

TEXTAFTER関数の引数のif_not_foundを指定する

=TEXTAFTER(B2:B7," ") では 半角のスペースを区切り文字に設定しています。
半角のスペースがない文字列(4行目と6行目)ではエラー #N/A が返されます。

一致するものが見つからない場合に表示されるエラー #N/A を "-"(ハイフン)に置き換えたいときは、
=TEXTAFTER(B2:B7," ",,,,"-") と引数「if_not_found」を指定します。

スポンサードリンク



よねさんのWordとExcelの小部屋 »  エクセル関数一覧表 »  区切り文字の前後の文字列を取り出すTEXTBEFORE関数・TEXTAFTER関数の使い方:Excel関数

PageViewCounter
Counter
Since2006/2/27