エクセル入門
TEXTBEFORE関数(テキストの指定文字列より前の部分を返す)

Excelの初心者向け入門解説
最終更新日:2022-11-14

TEXTBEFORE関数(テキストの指定文字列より前の部分を返す)


TEXTBEFORE関数はOffice365のExcelに2022年になってから追加された新しい関数です。


TEXTBEFORE関数は、テキスト文字列から指定した区切り文字列の前に出現するテキストを返します。
区切り文字列の前ではなく後ろを取得する場合はTEXTAFTER関数を使用します。
TEXTAFTER関数は、テキスト文字列から指定した区切り文字列の後ろに出現するテキストを返します。区切り文字列の後ろではなく前を取得する場合はTEXTBEFORE関数を使用します。TEXTAFTER関数の構文 =TEXTAFTER(text,delimiter,[instance_num],[match_mode…


TEXTBEFORE関数の構文

=TEXTBEFORE(text,delimiter,[instance_num], [match_mode], [match_end], [if_not_found])

text
テキスト
対象のテキスト文字列。
必ず指定します。
delimiter
区切り文字列
区切りに使用する文字。
textをdelimiterに指定された文字で区切って前の部分を返します。
必ず指定します。
instance_num
区切り位置
行の区切りに使用する文字。
区切り文字列が複数存在している場合の何番目を対象とするかの数値を指定します。
正の数を指定するとテキストの先頭から検索を開始し、負の数を指定するとテキストの末尾から検索を開始します。
省略可能です。
既定値は 1 です。(先頭から検索し最初に出現した区切り文字位置)
match_mode
検索方法
区切り文字の検索時に、英文字の大文字小文字を区別するかどうかを指定します。
0:大文字と文字を区別する
1:大文字と小文字を区別しない
既定値は 0:(大文字と文字を区別する)
match_end
終端と一致
テキストの末尾を区切り記号として扱うかどうか。
0:一致して終了しない
1:一致して終了
省略可能です。
既定値は 0:(0:一致して終了しない)
これは非情に分かりづらいので、この下で詳しく解説します。
if_not_found
見つからない時
一致するものが見つからない場合に返される値。
省略可能です。
既定値は #N/A です。

テキスト(text)
エラー値の場合は他の指定にかかわらず同じエラー値が返されます。

区切り文字列(delimiter)
空文字列""(長さ0の文字列や空のセル)を指定した場合、
前から検索 (instance_num が正) には空のテキストが返され、末尾から検索するとき (instance_num が負の場合) にはテキスト全体が返されます。

区切り位置(instance_num)
テキスト内に存在する区切り文字列の何番目を区切りとして使用するかの数値です。
区切り文字列として","を指定した場合
Excel エクセル 新関数 TEXTBEFORE関数
正の数値を指定した場合は、先頭から1,2,...となります。
負の数値を指定した場合は、末尾から-1,-2,...となります。
TEXTBEFORE関数は、この区切り文字の位置より前の部分の文字列を返します。
instance_numの絶対値が、存在する区切り文字列の数の絶対値より大きい場合は #N/A! エラーになります。

(区切り文字列が2つ存在する場合なら、3以上または-3以下の指定は #N/A)
instance_numに0を指定すると #VALUE! エラーになります。
省略時の既定値は 1 です。

検索方法(match_mode)
区切り文字列の検索時に英文字(アルファベット)の大文字小文字を区別するかどうかです。
区切り文字は記号を指定することが多いので、区切り文字として英文字を使う機会は多くないと思います。

Excel エクセル 新関数 TEXTBEFORE関数

終端と一致(match_end)
終端を区切り文字列と一致して判定するかどうかの指定です。
(区切り位置が正数ならテキストの最後、区切り位置が負数ならテキストの最初)

Excel エクセル 新関数 TEXTBEFORE関数

区切り文字列として","を指定し、match_endに1を指定した場合
Excel エクセル 新関数 TEXTBEFORE関数
match_endに1を指定した場合は検索において終端も一致していると判定します。
正の数値を指定した場合は、先頭から検索していきテキストの末尾も一致として扱います。
負の数値を指定した場合は、末尾から検索していきテキストの先頭も一致として扱います。
上記の場合なら、区切り位置(instance_num)に3または-3を指定した場合は空文字""が返されます。

区切り文字列が存在せず、match_endに1を指定した場合
Excel エクセル 新関数 TEXTBEFORE関数
テキストの末尾が1、テキストの先頭が-1になります。
区切り位置を省略した場合は1指定になるので、空文字""が返されることになります。

見つからない時(if_not_found)
テキスト(text)内に区切り文字列(delimiter)と一致するものが見つからない場合に返される値です。
省略時の既定値は #N/A です。
テキストがエラー値の場合はこの指定は有効とは成らず、TEXTBEFORE関数は同じエラーを返します。


TEXTBEFORE関数の使用例と解説

使用例の目次

区切り文字列(delimiter)だけを指定

=TEXTBEFORE(A1,",")
Excel エクセル 新関数 TEXTBEFORE関数


テキストを先頭から検索し区切り文字列に最初に一致した位置より前の部分を返します。
省略された引数は以下の既定値になります。
区切り位置(instance_num) = 1
検索方法(match_mode) = 0:大文字と文字を区別する
終端と一致(match_end) = 0:一致して終了しない
見つからない時(if_not_found) = #N/A
=TEXTBEFORE(A1,";")
Excel エクセル 新関数 TEXTBEFORE関数

テキスト内に区切り文字列に一致する文字列がないので、既定値の #N/A が返されます。

テキスト(text)にセル範囲(複数セル)を指定

=TEXTBEFORE(A1:A2,",")
Excel エクセル 新関数 TEXTBEFORE関数

テキスト(text)に応じてTEXTBEFOREの結果もスピルします。
テキストが横範囲なら横に、縦範囲なら縦にスピルします。

区切り位置(instance_num)に正の値を指定

=TEXTBEFORE(A1,",",2)
Excel エクセル 新関数 TEXTBEFORE関数

テキストを先頭から検索し区切り文字列が2番目に出てきた位置より前の部分を返します。
=TEXTBEFORE(A1,",",1) → 「Excel」
=TEXTBEFORE(A1,",",2) → 「Excel,Word」
instance_numに3以上を指定した場合は #N/A エラーとなります。

Excel エクセル 新関数 TEXTBEFORE関数

区切り位置(instance_num)に負の値を指定

=TEXTBEFORE(A1,",",-1)
Excel エクセル 新関数 TEXTBEFORE関数

テキストを末尾から検索し区切り文字列が1番目に出てきた位置より前の部分を返します。
=TEXTBEFORE(A1,",",-1) → 「Excel,Word」
=TEXTBEFORE(A1,",",-2) → 「Excel」
instance_numに-3以下を指定した場合は #N/A エラーとなります。

Excel エクセル 新関数 TEXTBEFORE関数

検索方法(match_mode)に「1:大文字と小文字を区別しない」を指定

=TEXTBEFORE(A1,"A",,1)
Excel エクセル 新関数 TEXTBEFORE関数

検索方法(match_mode)に「1:大文字と小文字を区別しない」を指定しているので、"a"と"A"を区別しません。
したがって、先に一致した"a"より前の文字列が返されています。
=TEXTBEFORE(A1,"A",,0) → 「123a45」
=TEXTBEFORE(A1,"A",,1) → 「123」

終端と一致(match_end)に「1:一致して終了」を指定

正の数を指定
=TEXTBEFORE(A1,",",3,,1)
Excel エクセル 新関数 TEXTBEFORE関数

終端と一致(match_end)に「1:一致して終了」を指定しているので、文字列の最後に区切り文字列があるものとして動作します。
つまりテキストが、「Excel,Word,Access,」である場合と同様の結果になります。
省略または「0:一致して終了しない」の指定の場合は、検索文字列は2つしかないので3の指定では #N\A になります。

Excel エクセル 新関数 TEXTBEFORE関数

負の数を指定
=TEXTBEFORE(A1,",",-3,,1)
Excel エクセル 新関数 TEXTBEFORE関数

区切り位置(instance_num)に負の値を指定しているので、終端から前に向かって検索します。
終端と一致(match_end)に「1:一致して終了」を指定しているので、文字列の先頭に区切り文字列があるものとして動作します。
つまりテキストが、「,Excel,Word,Access」である場合と同様の結果になります。
省略または「0:一致して終了しない」の指定の場合は、検索文字列は2つしかないので-3の指定では #N\A になります。

Excel エクセル 新関数 TEXTBEFORE関数

この引数を使用する特段のメリットは感じられません。
実際に存在する区切り文字列の数より多い数を指定している可能性がある場合に、
テキストをそのまま返したければ、
=TEXTBEFORE(A1,",",3,,0,A1)
空文字列を返したければ、
=TEXTBEFORE(A1,",",3,,0,"")
このように指定したほうが数式が分かり易いと思います。

見つからない時(if_not_found)を指定

=TEXTBEFORE(A1,";",,,,A1)
Excel エクセル 新関数 TEXTBEFORE関数

区切り文字列の";"はテキストに存在しないので、見つからない時(if_not_found)で指定した値が出力されます。
上記では、存在しない場合にテキスト文字列をそのまま出力する指定にしています。
空文字列の""を指定すれば出力セルは空白になります。

区切り文字列(delimiter)に配列を指定

=TEXTBEFORE(A1,{",",";"})
Excel エクセル 新関数 TEXTBEFORE関数

区切り文字列(delimiter)に配列を指定してもスピルしません。
配列の先頭文字列だけが有効になるようです。
これは少し不満のある仕様ですが、仕方ありません。

区切り文字列(instance_num)に配列を指定

=TEXTBEFORE(A1,",",{1,2})
Excel エクセル 新関数 TEXTBEFORE関数

区切り文字列(instance_num)に横配列の {1,2} を指定しているので横にスピルしています。
縦配列の {1;2} と指定すれば縦にスピルします。

Excel エクセル 新関数 TEXTBEFORE関数

TEXTBEFOREの応用例:TEXTBEFOREまたはTEXTAFTERとの組み合わせ

以下では、複数の括弧()内の文字列を取り出して横に展開する例題でTEXTBEFORE関数を使っています。。
かっこつけてんじゃないよ編|LAMBDA以降の新関数の問題と解説(配列操作関数編)


LAMBDA以降の新関数の問題集 ・・・ 解答は別ページになっています。

・目次 ・LAMBDA踊るぞ編 ・LAMBDA踊るぞ編2 ・SCAN編 ・MAP編 ・REDUCE編 ・山手線営業の旅編 ・BYROW,BYCOL編 ・ここからはフリー問題だよ編 ・好きな関数を使ってくれ編 ・いろんな関数を使ってね編 ・魔球編 ・豚が木に登れば落ちることもある編 ・たまには100点とってみたいものだ編 ・これは何と言う処理なんだろ編 ・数字は嫌いなのだ編 ・外堀から埋めていくぞ編 ・なぜわざわざそうしたいのか編 ・かっこつけてんじゃないよ編 ・頭の体操だけど新関数の出番はあるか?編 ・定番だけど出してなかったよね編
LAMBDA以降の新関数の使用例
・2つの1次元配列から、それをクロス結合した結果を返す ・A列が同じ行のB列の値を連結して、A列の一意な値とともに出力 ・名前定義を使わずにLAMBDA関数で再帰する方法 ・文字列を大文字小文字変換して大小文字の全組み合わせを出力 ・2つのテーブルの片方しかない行を縦に連結出力 ・3連単、3連複のフォーメーション買目を全て列挙する ・FILTER関数の出力行数・列数を指定する ・月が縦で日が横の表を、曜日(7列)で縦に折り返す ・文字列内の括弧()()の中の文字を取り出して列挙 ・表内にあるセル内改行を複数行に展開 ・文字列の中から1文字削除の全パターン出力 ・クロスABC分析 ・月利が毎月変動する月複利の計算 ・レーベンシュタイン距離 ・文字列を数字と数字以外で分割 ・縦横スピルしないXLOOKUP代替(MATCH+INDEX,FILTER,CHOOSEROWS) ・直積(クロス結合、…




同じテーマ「エクセル入門」の記事

WRAPROWS関数(1次元配列を指定数の行で折り返す)
WRAPCOLS関数(1次元配列を指定数の列で折り返す)
TEXTSPLIT関数(列と行の区切り記号で文字列を分割)
TEXTBEFORE関数(テキストの指定文字列より前の部分を返す)
TEXTAFTER関数(テキストの指定文字列より後ろの部分を返す)
LAMBDA以降の新関数の使用例
縦横スピルしないXLOOKUP代替(MATCH+INDEX,FILTER,CHOOSEROWS)
直積(クロス結合、交差結合)とピボット解除
LAMBDA以降の新関数の問題集
LAMBDA以降の新関数の問題と解説(ヘルパー関数編)
LAMBDA以降の新関数の問題と解説(配列操作関数編)


新着記事NEW ・・・新着記事一覧を見る

数字(1~50)を丸付き数字に変換するVBA|VBA技術解説(2022-11-15)
TEXTAFTER関数(テキストの指定文字列より後ろの部分を返す)|エクセル入門(2022-11-14)
TEXTBEFORE関数(テキストの指定文字列より前の部分を返す)|エクセル入門(2022-11-14)
TEXTSPLIT関数(列と行の区切り記号で文字列を分割)|エクセル入門(2022-11-12)
LAMBDA以降の新関数はVBAで使えるか|VBA技術解説(2022-11-11)
WRAPCOLS関数(1次元配列を指定数の列で折り返す)|エクセル入門(2022-11-08)
WRAPROWS関数(1次元配列を指定数の行で折り返す)|エクセル入門(2022-11-08)
EXPAND関数(配列を指定された行と列に拡張する)|エクセル入門(2022-11-07)
TAKE関数(配列の先頭/末尾から指定行/列数を取得)|エクセル入門(2022-11-06)
DROP関数(配列の先頭/末尾から指定行/列数を除外)|エクセル入門(2022-11-06)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Excelショートカットキー一覧|Excelリファレンス
7.並べ替え(Sort)|VBA入門
8.エクセルVBAでのシート指定方法|VBA技術解説
9.マクロって何?VBAって何?|VBA入門
10.ExcelマクロVBAの基礎を学習する方法|エクセルの神髄




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ