そこでそれぞれの機能をまとめ、違いを比べてみました。
- 文字列を結合する関数にはCONCAT関数、CONCATENATE関数、JOIN関数、TEXTJOIN関数があります。
- CONCAT関数はほとんど使いどころがなく、CONCATENATE関数とJOIN関数は用途次第、オールマイティなのはTEXTJOIN関数です。
手順
機能比較
4種の関数の機能をまとめました。下に記載しているものほど多機能で強力ですがJOIN関数にはちょっとした制約があります。
詳しい仕様については下記の実例をご覧ください。
関数名 | 引数 | 区切り 文字 | 空白無視 | 値として指定できる セル範囲 |
---|---|---|---|---|
CONCAT | (値1,値2) | 不可 | - | 単一セル |
CONCATENATE | (値1[,値2,……]) | 不可 | - | 複数行複数列 |
JOIN | (区切り文字,値1[,値2,……]) | 可 | 不可 | 単一列または単一行(混在可) |
TEXTJOIN | (区切り文字,空白無視,値1[,値2,……]) | 可 | 可 | 複数行複数列 |
CONCAT関数
機能的に最も弱いのがCONCAT関数です。
引数を2つしか指定できず、しかも基本的にそれぞれ単一のセルしか指定できないため、2つの値を結合することしかできません。
ここではB7セルに次のように入力してみます。
=CONCAT(B2,C2)
実行結果です。
&演算子を使った方が明らかに簡単で、使い道がほとんどない関数です。
CONCATENATE関数
CONCATENATE関数では複数行複数列の範囲を結合の対象とすることができ、さらに範囲を複数指定できるため、CONCAT関数よりはるかに強力です。
区切り文字を入れることはできないものの、それ以外はこの関数でこと足ります。
ここではB7セルに次のように入力してみます。
=CONCATENATE(B2:E2)
引数として単一の行を指定しています。
実行結果です。
単一のセルしか指定できないCONCAT関数と比べ、これだけでもはるかに使いやすいことが分かります。
複数行複数列の範囲を指定でき、さらに複数の範囲を指定することができます。
ここではB7セルに次のように入力してみます。
=CONCATENATE(B2:C3,D2:E3,D4:E4)
実行結果です。
JOIN関数
JOIN関数では結合する文字列の間に区切り文字を入れることができます(入れないこともできます)。
これも便利な関数ですが微妙な制約がありますので注意が必要です。
ここではB7セルに次のように入力してみます。
=JOIN("☆",B2:E2)
第1引数で区切り文字「☆」を指定しています。第1引数を空文字("")にするか何も指定しない(カッコ内の1文字目をカンマにする)ことで区切り文字を入れないこともできます。
第1引数が区切り文字であることを忘れて引数の順番を間違えたりセル範囲だけを指定してしまうとおかしな結果になったりエラーになったりしますので注意が必要です。
実行結果です。
JOIN関数は空白セルも結合の対象とみなし、区切り文字で区切ります。
ここではB7セルに次のように入力してみます。
=JOIN("☆",B3:E3)
実行結果です。
空白セルを結合した場合には区切り文字が連続したり、先頭や末尾に区切り文字が残る結果となります。
これを防ぎたい場合はTEXTJOIN関数を使うしかありません。
また、JOIN関数では結合の対象として単一の行または単一の列までしか指定できず、複数行複数列の範囲は指定できません。
ここではB7セルに次のように入力してみます。
=JOIN("☆",B2:C3)
結合の対象として2行2列の範囲を指定しています。
結果はエラーとなりました。
ただし複数の範囲を指定する場合に単一行と単一列を混在させることはできます。
ここでは次のように入力してみます。
=JOIN("☆",B2:D2,C3:C5,D4:E4)
エラーにはならず結果が返ってきました。
TEXTJOIN関数
機能的に最も強力なのがTEXTJOIN関数です。
区切り文字とともに空白無視の設定(空白セルがある場合に、区切り文字が連続したり先頭や末尾に残るのを避ける)ができます。
さらに対象となるセル範囲も複数行複数列とすることができ、さらにそれらを複数指定できます。
ここではB7セルに次のように入力してみます。
=TEXTJOIN("☆",TRUE,D2:E3,B4:C5,D4:D5)
第2引数をTRUEとすることで空白を無視する設定としています。
実行結果です。
対象としているセル範囲に空白が2か所(D3とE3)含まれていますが区切り文字が続いてしまうことはなく、空白無視の設定が機能しているのがわかります。