Excel関数のうち、文字列の結合に関する関数は大きく分けてCONCATE関数とTEXTJOIN関数の2種類がある。
単純に文字列を結合させるだけなら「&」でつなぐだけでも事足りる。
なぜ文字列結合だけでこんなにいろいろな種類があるのだろうと気になって調べてみた。
その結果、それぞれの関数の特徴と使い方が分かったのでご紹介する。
◆それぞれの特徴
「&」について
文字の結合でもっともシンプルな方法はセルとセルを「&」でつなげる方法。
ちなみに「&」の正式名称は「アンド」ではなく「アンパサンド」。
【記述方法】
CONCAT関数について
CONCAT関数はセルもしくは文字列を単純結合する関数。
「,」で区切るか=CONCAT(A1:A3)のように連続したセル範囲の指定も可能。
【記述方法】
TEXTJOIN関数について
TEXTJOIN関数は上の二つとは少し異なり、ややクセのある関数。下記のような記載方法で使用する。一番の違いは「区切り記号の指定」と「空白セルを無視するかどうか」を選べる点にある。これについては後で詳しく述べる。
【記述方法】
単純にセルとセルの文字列を結合したいだけなのに、なぜEXCELにはこんなにいろいろな種類の方法があるのだろうか。Microsoftの中の人もいろいろ考えているようで、使用するシチュエーションによって便利な方法が異なるのだ。
そのシチュエーションについて、詳しく説明する。
◆ケースごとの使い方
1.2つのセルの値を単純結合する
文字結合の最もシンプルな形。2つのセルの文字を結合するだけなら上記のようになる。この場合は「&」でつないでしまうのがいちばんシンプルな方法と言える。
2.複数セルの値を単純結合する
1の場合と同様、&でつなげることももちろんできるが、セルの数が増えるほどダルい。また、5個程度なら問題ないが、さらに結合するセルの数が増えると何度も&でつなぐため、非常に見づらくなる。
その点、CONCAT関数はセル範囲を指定して結合できるので、すっきりとして見やすくなっている。
TEXTJOIN関数も範囲指定が可能だが、区切り記号と空白セルの取り扱いを記載する必要がある分、CONCAT関数よりひと手間かかる。この場合はCONCAT関数がベストだ。
3.各文字列の間を「,」で区切って結合する。
文字列の間を指定した記号で区切って結合したい場合に真価を発揮するのがTEXTJOIN関数だ。見ての通り、第1引数に","を入力するだけで各文字の間にカンマを自動的に入力してくれるので、他の2つに比べて明らかにすっきりと見やすい数式で表せる。
見た目だけでなく、実際の入力の手間においてもTEXTJOIN関数が圧勝だ。
話が少し戻るが、1~2のようにTEXTJOIN関数の第1引数を空欄にすることで区切り記号を間に挟まずに結合することができる。
4.空欄を含む複数のセルの間にカンマを入れて結合(空欄を無視しない)
3の方法で、空欄を含むセルがある場合は上記のような表記になる。いずれも空欄セルを「あるもの」として処理するため、カンマがダブってかっこ悪い。
5.空欄を含む複数のセルの間にカンマを入れて結合(空欄を無視する
二重カンマ問題をクリアする方法は上記の通り。これがTEXTJOIN関数の真骨頂ともいえる使い方で、2番目の引数を「TRUE」にするだけで空欄セルを無視してくれる。
&結合とCONCAT関数は数式に空白セルを含めないよう書き換える必要があるが、TEXTJOIN関数は第2引数を打ち換えるだけで簡単に空欄を無視してくれる。
◆具体的な使い方
このように、シチュエーションによって文字列結合の最適な方法が変わることが分かった。
まとめると
- 単純な2セル結合なら「&」
- 単純な複数範囲の結合ならCONCAT関数
- 区切り記号をはさむか、空欄セルを無視したいならTEXTJOIN関数
が最適な方法といえる。
これらの特性を知っていれば、下記のような複雑な文字列結合も簡単にできてしまう。
「都道府県」から「住所」までの範囲をCONCAT関数で結合し、「丁目」から「号」までは間に「-(ハイフン)」を入れたいのでTEXTJOIN関数を使う。
住所によっては丁目が無いところもあるので、TEXTJOIN関数で空欄セルは無視する設定(TRUE)にする。
そしてこれらを&でつなげれば、どんな場合でも単一の数式でカバーでき、簡単に結合した住所を生成できる。
まぁ、そもそも「丁目」~「号」をバラバラなデータで管理するなって話だけど。
このように「&」「CONCAT関数」「TEXTJOIN関数」は用途に応じて使い分けることで、文字列の結合が格段に便利になる。