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

【Excel】大量のセルを「&」で連結するのは非効率!? 区切り文字や改行にもスマートに対応できる文字列連結テク

文字列を連結する方法の正解は?

文字列を連結する方法はいろいろあるけど……

 複数のセルに入力した文字列や数値を連結したいことがありますよね。例えば、住所録で都道府県名と住所が別々のセルに入力されているのでまとめたい。商品番号の分類と型番を「-」(ハイフン)で区切ってつなげたい。など、いろいろな「連結」が考えられます。

 手っ取り早いのは「&」演算子でつなげる方法でしょう。「=A1&B1」のように簡単に記述できるため、利用する機会も多いと思います。しかし「&」は万能ではなく、関数を利用するほうが効率的なこともあります。今回は、文字列連結について知っておくと役立つテクニックを紹介します。

「&」演算子を利用した連結は手軽ですが、もっと効率的な方法もあります。

セル範囲をまとめて連結する

 「&」演算子を利用する場合、指定するセルは3つくらいが限度でしょう。繰り返し「&」を入力するのは非効率的です。3つ以上のセル範囲を連結するならCONCAT関数がおススメ。構文は以下の通り。引数[文字列]には、文字列、ひとつのセル、セル範囲を指定可能です。

CONCAT関数の構文。引数[文字列]には、文字列かセルを253個まで指定できます。「D2:F2」のようなセル範囲の指定もできます。
「=CONCAT(D2:F2)」と指定(①)すれば、セルD2~F2のセルを連結できます。

 ただし、CONCAT関数はExcel 2021/2019とMicrosoft 365のExcelで利用できる関数です。Excel 2016以前のバージョンを使う場合は、CONCATENATE関数を使うことになります。なお、CONCAT関数のようにセル範囲を指定することはできません。すべてのセルを「,」で区切って連結します。「&」演算子を繰り返し入力するよりは楽だと思います。

CONCATENATE関数の構文。引数[文字列]には、文字列かセルを255個まで指定できます。セル範囲は指定できません。

「-」などの区切り文字を挟んで連結する

 「-」(ハイフン)、「/」(スラッシュ)、「,」(カンマ)などの区切り文字を含めて連結する場合は、TEXTJOIN関数が便利。1つめの引数[区切り記号]に「"」で囲んだ区切り文字を指定します。セル範囲を指定して、それらを「-」で区切ることが可能です。なお、Excel 2021/2019とMicrosoft 365のExcelで利用可能です。

TEXTJOIN関数の構文。[区切り記号]には[文字列]の間に挿入する区切り文字を指定します。[空文字列を無視]は「TRUE」「FALSE」を指定。空白の[文字列]がある場合、「TRUE」は区切り文字を挿入せず、「FALSE」は必ず区切り文字を挿入します。引数[文字列]には、文字列かセル、セル範囲を252個まで指定できます。
「=TEXTJOIN("-",TRUE,A2:C2)」と指定(②)しました。セルA2~C2のセルを「-」で区切って連結しています。

改行を挟み込む

 文字列の連結時に「改行」を挟むテクニックも覚えておきましょう。指定した文字コードを返すCHAR関数を挟みます。改行は「CHAR(10)」です。数式を入力するセルを選択して[ホーム]タブにある[折り返して全体を表示する]ボタンをクリックして有効にしておいてください。なお、「&」演算子やTEXTJOIN関数、CONCATENATE関数でも「CHAR(10)」を組み合わせ可能です。

 以下は住所録を元に、「〒」を追加して郵便番号の後ろで改行、都道府県と住所、番地を連結して改行して名前を続けています。

[ホーム]タブ(③)の[折り返して全体を表示する](④)を有効にしておきます
「=CONCAT("〒",C2,CHAR(10),D2:F2,CHAR(10),B2)」と入力(⑤)します
「〒」の記号と改行を挿入できました(⑥)

 このようにデータを成形する場合、コピー&ペーストを繰り返しがちですよね。CONCAT関数とCHAR(10)の組み合わせを使ってみてください。数式なので以降のセルもオートフィルで一気に取得可能です。

異なる区切り文字を挟む

 TEXTJOIN関数の応用例です。『ひとつめの区切り文字は「/」で残りは「-」にしたい』とか『最後の区切りは「:」でほかは「-」としたい』ということがありますよね。TEXTJOIN関数のひとつめの引数[区切り記号]の指定で実現できます。

 以下の例は、備考を「:」で続けています。引数[区切り記号]の指定方法に注目してください。「{"-","-",":"}」としています。1番目と2番目の区切り文字は「-」、3番目の区切り文字は「:」という意味です。

「=TEXTJOIN({"-","-",":"},TRUE,A2:D2)」と入力(⑦)しました。「{"-","-",":"}」は、1番目と2番目は「-」、3番目は「:」で区切ります。

どのように連結したいのかを考えよう

 文字列を連結する前に、どのような結果を得たいのかを考えることが大切です。連結するのは2つのセルなのか、3つ以上のセルなのか、区切り文字や改行は必要? など、状況によって手段を使い分けましょう。特に区切り文字を使った複数のセルの連結は、TEXTJOIN関数でかなりの手間が省けますよ。