どのように結合したいのかを考える
名字と名前をあわせて姓名にするなど、Excel(エクセル)で別々のセルに入力された文字列を、1つのセルに結合(連結)したい場面は多々あります。これを実現するには、「&」(アンド/アンパサンド)演算子、CONCAT(コンカット)関数、CONCATENATE(コンカティネート)関数、TEXTJOIN(テキストジョイン)関数のいずれかを使いましょう。
「&」演算子やCONCAT関数、CONCATENATE関数、TEXTJOIN関数を使うと、別々のセルに入力された文字列を1つのセルに結合できます。
どの方法を使うかは好みで選択されがちですが、結合した後の文字列をどうするのか、目的を考えて選択すると作業効率が変わります。結合には、主に以下の3つのケースが考えられます。
ここでは各関数の構文と使用できるExcelのバージョンを確認してから、使い分けるポイントを解説していきます。ポイントだけ確認したい場合は、上記のリンクをクリックすると、記事内の解説までスクロールします。
各関数の構文と利用できるExcelのバージョン
CONCAT
(文字列1,文字列2,・・・,文字列253)
引数[文字列]には結合する文字列かセルを253個まで指定できます。「B2:D2」のようにセル範囲を指定することも可能です。
CONCATENATE
(文字列1,文字列2,・・・,文字列255)
引数[文字列]には結合する文字列かセルを255個まで指定できます。
TEXTJOIN
(区切り記号, 空の文字列を無視, 文字列1, 文字列2, ..., 文字列252)
引数[区切り記号]には、結合時に挟みたい区切り文字を指定します。[空の文字列を無視]は、論理値(TRUEまたはFALSE)で指定します。次の引数[文字列]に空の文字列がある場合、TRUEは無視、FALSEは空の文字列も結合して区切り記号を挿入します。[文字列]は結合する文字列かセルを指定します。「B2:D2」のようにセル範囲を指定することも可能です。
CONCAT関数とTEXTJOIN関数は、Excel 2019とOffice 365版のExcelで利用できる新しい関数です。Excel 2016以前のバージョンでファイルを開く可能性がある場合は、CONCATETANE関数か「&」演算子を使ってください。
また、Microsoftの公式サポートには、CONCATENATE関数が将来のバージョンで利用できない可能性があるとの記載があります。Excel 2019とOffice 365版のExcelを利用しており、旧バージョンのExcelを利用しないなら、CONCATENATE関数は避けたほうがいいでしょう。
2つのセルを結合する
最も単純な結合です。ここではセルB2とC2を結合してみます。入力する式は「&」が一番単純、TEXTJOIN関数は複雑です。なお、CONCAT関数は「B2,C2」のような「,」(カンマ)区切りではなく「B2:C2」とセル範囲で指定することもできます。
「&」
入力が簡単
「=B2&C2」と入力します。
CONCAT関数
「,」区切りのほか、セル範囲の指定も可能
「=CONCAT(B2:C2)」と入力します。「=CONCAT(B2,C2)」と入力しても同じ結果を得られます。
CONCATENATE関数
「,」区切りで指定する
「=CONCATENATE(B2,C2)」と入力します。
TEXTJOIN関数
区切り文字を最初に指定する
「=TEXTJOIN("",TRUE,B2,C2)」と入力します。ここでは、区切り文字を挾まないので、引数[区切り記号]には、空の文字列を表す「""」を指定しています。2つ目の引数[空の文字列を無視]は「TRUE」として無視します。
3つ以上のセルを結合する
3つ以上のセルを結合するときは「B2:D2」のようにセル範囲を指定できるCONCAT関数、もしくはTEXTJOIN関数が便利です。連続しないセルとセル範囲を「,」でつなげ「B1,B2:D2」のような指定もできます。
「&」
複数のセルを「&」で挟む
「=B2&C2&D2」と入力します。
CONCAT関数
連続するセル範囲は「:」で指定できる
「=CONCAT(B2:D2)」と入力します。「=CONCAT(B2,C2,D2)」と入力しても同じ結果を得られますが、連続するセル範囲は「:」でつないだほうがスマートです。
CONCATENATE関数
複数のセルを「,」区切りで指定する
「=CONCATENATE(B2,C2,D2)」と入力します。
TEXTJOIN関数
区切り文字を最初に指定。連続するセル範囲は「:」で指定できる
「=TEXTJOIN("",TRUE,B2:D2)」と入力します。区切り文字を挾まないときは、引数[区切り記号]には「""」(空の文字列)を指定します。2つ目の引数[空の文字列を無視]は「TRUE」として無視します。
区切り文字などを含めて結合する
セルを結合する際に、固定の文字列を含めて結合する方法です。文字列は「"」(ダブルクォーテーション)で囲んで引数に指定します。セルの前後に結合するときも同じ要領です。
区切り文字を含めて結合したいときは、引数で「区切り記号」を指定できるTEXTJOIN関数がおすすめです。数式をまとめて見てみましょう。ここではセル同士の間に「-」を挟んでいますが、「" "」や「" "」のように半角・全角スペースを指定したり、CHAR関数を利用して「CHAR(10)」で改行を結合したりする使い方もできます。
「&」、CONCAT関数、CONCATENATE関数では、「"-"」を引数に都度指定する必要があり、少し面倒です。TEXTJOIN関数は「=TEXTJOIN("-",TRUE,B2:D2)」となります。セル同士を結合する際に利用した数式と比較すると、違いは第1引数の「"-"」のみです。
TEXTJOIN関数の1つ目の引数には、配列定数を利用できます。区切り文字を切り替えられる、応用例です。ここでは「{"/","-"}」のように指定しています。
「=TEXTJOIN({"/","-"},TRUE,B2:D2)」と入力しました。1つ目の引数が「{"/","-"}」、結合するセルは、B2、C2、D2なので、セルB2とC2は「/」、C2とD2は「-」で区切られています。
結合した文字列の日付を正しく表示する
表の1行目に、TODAY関数を利用した、更新日を表すための数式を挿入してみましょう。日付が自動的に更新されるよう「=TODAY()&"更新"」と入力しました。
「=TODAY()&"更新"」と入力してみます。
結果は数値になってしまいました。
文字列を結合した結果はテキストとして扱われるため、日付がシリアル値に変換されてしまいました。この現象を解消するには、TEXT関数を使いましょう。
数式を「=TEXT(TODAY(),"yyyy/mm/dd"&"更新")」と修正します。
日付が正しく表示されました。
結合した文字列を数値に変換する
文字列結合後の値は、数値として扱えません。そのため、特定の数値と比較したいなど、文字列を数値として使いたい場合は、VALUE関数を利用して変換します。
以下の例では、セルE3に「=C3&D3」と入力してあり、5ケタの数値が入っているように見えます。これが20,000以上かどうかを判定するために、セルG3には「=E3>=200000」と入力してあります。すると、20,000に満たないように見える値も「TRUE」となってしまいました。
セルE3には「=C3&D3」、セルG3には「=E3>=20000」と入力してあります。10001や10002は該当しないはずです。
セルE3の数式を「=VALUE(C3&D3)」と修正すると、結合した文字列がそのまま数値に変換されます。
修正した数式をオートフィルでコピーすると、文字列が数値と認識され、正しい結果が得られました。
文字列の結合は「&」と決めつけずに、目的に応じて使い分けたほうが効率的です。特に区切り文字を使って複数のセルを結合するときは、TEXTJOIN関数で手間がかなり省けます。