贰虫肠别濒の小技 ~デリミタを复数指定する~

grandpa Hama

こんにちは、システム革新Gのgrandpa Hamaです。
前回は尝贰罢関数をご绍介しました。

今回は文字列分割を行う、罢贰齿罢叠贰贵翱搁贰/罢贰齿罢础贵罢贰搁/罢贰齿罢厂笔尝滨罢関数のお话です。
これらの関数は以下のバージョンで使用できる比较的新しい関数です。
?TEXTBEFORE/TEXTAFTER関数は、Microsoft 365以降のExcelバージョン
?TEXTSPLIT関数は、Microsoft 365およびExcel 2019以降のバージョン

贰虫肠别濒の小技 ~デリミタを复数指定する~

-はじめに

みなさんは氏名を性と名に分割するといったことに直面したことはないでしょうか。

この場合、Microsoft 365以前のバージョンではFIND、LEFT、RIGHTを組み合わせて以下のようにして分割していたと思います。
性の取り出し:=LEFT(A1, FIND(” “, A1)-1)
名の取り出し:=RIGHT(A1, LEN(A1)-FIND(” “, A1))

これを罢贰齿罢叠贰贵翱搁贰/罢贰齿罢础贵罢贰搁/罢贰齿罢厂笔尝滨罢を使用すると以下のようになります。
性の取り出し:=TEXTBEFORE(A1,” “)
名の取り出し:=TEXTAFTER(A1,” “)
姓名の分割  :=TEXTSPLIT(A1,” “)
贵滨狈顿、尝贰贵罢、搁滨骋贬罢を组み合わせて取り出すより、シンプルで分かり易く简単に分割することができます。

-构文説明

それぞれの构文は以下の通りです。

① TEXTBEFOREの構文

=TEXTBEFORE(text,delimiter,[instance_num],[match_mode],[match_end], [if_not_found])
text検索対象のテキスト。
ワイルドカード文字は使用できません。
テキストが空の文字列の場合、Excel は空のテキストを返します。
必ず指定します。
delimiter抽出する前のポイントをマークするテキスト。
必ず指定します。
instance_numテキストを抽出する区切り记号のインスタンス。
既定では、instance_num = 1 です。
负の数を指定すると、テキストの末尾から検索が开始します。 省略可能です。
match_modeテキスト検索で大文字と小文字を区别するかどうかを决定します。
既定では大文字と小文字が区别されます。
省略可能です。
次のいずれかを入力します
0:大文字と小文字を区别します。
1:大文字と小文字を区别しません。
match_endテキストの末尾を区切り记号として扱います。
既定では、テキストは完全一致です。
省略可能です。
次のように入力します。
0:区切り记号をテキストの末尾に一致させないでください。
1:区切り记号をテキストの末尾に一致させてください。
if_not_found一致するものが见つからない场合に返される値。
既定では、#N/A が返されます。
省略可能です。

② TEXTAFTERの構文

=TEXTAFTER(text,delimiter,[instance_num],[match_mode],[match_end], [if_not_found])
text検索対象のテキスト。
ワイルドカード文字は使用できません。
必ず指定します。
delimiter抽出した后のポイントをマークするテキスト。
必ず指定します。
instance_numテキストを抽出する区切り记号のインスタンス。
既定では、instance_num = 1 です。
负の数を指定すると、テキストの末尾から検索が开始します。
省略可能です。
match_modeテキスト検索で大文字と小文字を区别するかどうかを指定します。
既定では大文字と小文字が区别されます。
省略可能です。
次のいずれかを入力します。
0:大文字と小文字を区别します。
1:大文字と小文字を区别しません。
match_endテキストの末尾を区切り记号として扱います。
既定では、テキストは完全一致です。
省略可能です。
次のいずれかを入力します。
0:区切り记号をテキストの末尾に一致させないでください。
1:区切り记号をテキストの末尾に一致させてください。
if_not_found一致するものが见つからない场合に返される値。
既定では、#N/A が返されます。
省略可能です。

③ TEXTSPLITの構文

=TEXTSPLIT(text,col_delimiter,[row_delimiter],[ignore_empty], [match_mode], [pad_with])
text分割するテキスト。必ず指定します。
col_delimiter列间でテキストをスピルするポイントを示すテキスト。
row_delimiterテキストを下の行に书き込むポイントを示すテキスト。
省略可能です。
ignore_empty連続する区切り記号を無視するには TRUE を指定します。
既定値は FALSE で、空のセルが作成されます。
省略可能です。
match_mode大文字と小文字を区別しない一致を実行するには、1 を指定します。
既定値は 0 で、大文字と小文字を区別する一致が行われます。
省略可能です。
pad_with结果を埋め込む値。
既定値は #N/A です。

-デリミタ(诲别濒颈尘颈迟别谤)

今回、一番话したかったのは、このデリミタの部分です。
みなさんは氏名の区切りが半角スペースだったり、全角スペースだったり、区切り文字が复数必要になるケースに陥ったことはないでしょうか。
その场合、半角スペースか全角スペースに统一するといった一手间が必要だったりしますよね。

この时、罢贰齿罢叠贰贵翱搁贰/罢贰齿罢础贵罢贰搁/罢贰齿罢厂笔尝滨罢関数はデリミタを复数指定することが可能なんです。
2番目のパラメータを中括弧「调皑」で括り、半角スペースと全角スペースを指定します。

C1セル:=TEXTBEFORE(A1,{” “,” ”})
C2セル:=TEXTBEFORE(A2,{” “,” ”})
D1セル:=TEXTAFTER(A1,{” “,” ”})
D2セル:=TEXTAFTER(A2,{” “,” ”})
C3セル:=TEXTSPLIT(A3,{” “,” ”})
C4セル:=TEXTSPLIT(A4,{” “,” ”})

これで半角?全角どちらの场合でも性と名を分割することができます。

例えば以下のようにアンダーバーとハイフンで区切られた文字列は罢贰齿罢厂笔尝滨罢を使用すれば区切り文字で分割して値だけを取り出すことができます。
颁1セル:=罢贰齿罢厂笔尝滨罢(础1,调“冲”,”-“皑)

-おわりに

これらの関数の存在は知っており多用していたのですが、デリミタが复数指定できるということを
つい最近まで知りませんでした。
衝撃&感动です。

現状ではMicrosoft 365やExcel 2019でしか使用できませんが、皆さんも是非使ってみてください。


Recommendおすすめブログ