いまさら聞けないExcelの使い方講座

【Excel】文字列の連結や分割に便利な新関数が登場! 「&」演算子やLEFT関数はもう古い?

文字列の結合や分割を簡単にする新関数を知っておこう

文字列の結合や分割に便利な新関数

 別々のセルに入力されたデータを連結して1つのセルにまとめたいことや、ひとつのセルに入力された文字列を別々のセルに分割したいことがありますよね。セルを編集モードに切り替えて、該当部分をドラッグして選択し、コピーや貼り付け……、と作業するのは数件でも手間がかかります。

 文字列の連結には「=A1&B1」のように、&演算子を使うことが多いですが、分割はどうしましょう? LEFT関数やRIGHT関数を使う方法がありますね。セルの内容をテキストエディターなどにコピーして、タブ文字を挿入してからエクセルに貼り付け直し、といったテクニックを使う人もいるでしょう。

 実は、便利な新関数が登場しています。TEXTJOIN関数とTEXTSPLIT関数です。Excel 2021 / 2019、Microsoft 365のExcelで利用可能。名前の通り、テキストを結合(JOIN)と分割(SPLIT)するための関数です。ありがちな例で簡単な使い方を見てみましょう。

区切り文字を挿入して結合できるTEXTJOIN関数

 TEXTJOIN関数の構文は以下の通りです。1つ目の引数[区切り文字]に指定した文字列を挟みながら、複数のセルを連結します。例えば「-」(ハイフン)を挟んだ連結、改行を入れて連結といった使い道が考えられます。

TEXTJOIN関数の構文。[区切り記号]には[文字列]の間に挿入する区切り文字を指定します。[空のセルは無視]には「TRUE」「FALSE」を指定。空白の[文字列]がある場合、「TRUE」は区切り文字を挿入せず、「FALSE」は必ず区切り文字を挿入します。引数[文字列]には、文字列かセル、セル範囲を252個まで指定できます。

 引数[空のセルは無視]は、[文字列]で指定したセル範囲に空のセルが含まれていた場合の扱いを指定します。無視するなら「TRUE」、空のセルも含めるなら「FALSE」を指定します。「TRUE」と指定することが多いでしょう。

 以下は「-」を挟んで複数のセルを連結する例です。後から区切り文字を変更したい場合は、引数[区切り記号]を変更するだけです。

セルD2に「=TEXTJOIN("-",TRUE,A2:C2)」と入力(①)します。[区切り文字]は半角の「"」で囲んで指定します
数式をコピーすれば(②)、一瞬で作業完了です
例えば、区切り文字を「_」に変更する場合は[区切り記号]を修正するだけです(③)
数式をコピーする(④)だけで修正完了です

 引数[区切り文字]には任意の文字列を指定できるため、“改行”しながら連結することも可能です。指定した文字コードを返すCHAR関数を使って、改行を表す「CHAR(10)」を指定します。数式を入力するセルを選択して[ホーム]タブにある[折り返して全体を表示する]ボタンをクリックして有効にしておいてください。

セルF2に「=TEXTJOIN(CHAR(10),TRUE,C2:E2)」と入力しました(⑤)

 なお、TEXTJOIN関数は“区切り文字を挿入して連結する”ことに特化しています。[区切り文字]を省略して連結することもできますが、以下のような状況では、CONCAT関数を使うほうがスマートです。

[区切り文字]を省略して「=TEXTJOIN(,TRUE,C2:E2)」のように指定することもできますが、単純に連結したいならCONCAT関数を利用するのがスマートです
CONCAT関数を使ってセルを連結した例。連結したいセル範囲を引数に指定するだけです

区切り文字で分割できるTEXTSPLIT関数

 特定の区切り文字が挿入された文字列を分割する時は、TEXTSPLIT関数が便利です。指定した区切り文字で、横(列)方向や縦(行)方向に分割できます。数式を1つ入力するだけで、結果はスピルとして表示されます。

TEXTSPLIT関数の構文。分割する対象を[文字列]に指定します。分割の目安にする区切り文字を[列区切り](横方向)、もしくは[行区切り](縦方向)に指定します。

 6つの引数がありますが、[文字列]と[列区切り]もしくは[行区切り]の2つのみ指定することがほとんどでしょう。[空文字列の扱い]には、区切り文字が連続する場合、無視(TRUE)するか、空白を含める(FALSE)かを指定します。規定は「FALSE」で省略可能です。

[検索モード]は、区切り文字の大文字と小文字を区別するかどうかという意味です。省略時は大文字と小文字を区別する「0」と見なされます。

 [空いたセルの値]は[列区切り]と[行区切り]の両方を指定した場合、該当する区切り文字がない場合に表示する値を指定します。規定では「#N/A」となります。

 なお、Excelのバージョンによって、引数のチップが英字で表示されることがありますが、意味は上記の通りです。

Excelのバージョンによって、引数のチップが英字で表示されることがあります

 単純な例として「-」で分割してみましょう。

セルB2に「=TEXTSPLIT(A2,"-")」と入力します(⑥)
結果はスピルで表示されます(⑦)
数式をコピーすれば完了です(⑧)

 複数の区切り文字が含まれる場合は、区切り文字を配列で指定することで分割できます。例えば「-」と「/」が含まれている文字列なら、[列区切り]や[行区切り]に「{"-","/"}」のように指定します。

セルA2には「-」と「/」が含まれています。セルB2に「=TEXTSPLIT(A2,{"-","/"})」と入力(⑨)すれば、分割可能です

 以下は、1つのセルに複数行でデータが入力されています。数値と地域で別々のセルに分割すること考えると、カッコも邪魔ですね。TEXTSPLIT関数で一発です。

 横方向にデータを見ると「(」と「)」が区切り文字と言えます。縦方向では改行(CHAR(10))です。「)」の後ろは“空文字列”なので無視すると、以下のような数式が考えられます。

=TEXTSPLIT(B2,{"(",")"},CHAR(10),TRUE)
セルB4に「=TEXTSPLIT(B2,{"(",")"},CHAR(10),TRUE)」と入力しました(⑩)

コピペから卒業しよう

 文字列の連結や分割する作業はコピペに頼りがちですが、ぜひ便利な新関数を利用してみてください。複数の区切り文字が含まれる文字列を分割する作業でも一気に処理できますよ。