複数の文字列を結合する数式をいくつか紹介します。

うちの会社はシフト制で、カレンダーに出勤する社員を書いて張り出しています。それのもとになっているデータはこんな感じです。





縦に日付があって、その横に一人1セルずつ名前が記入してありますね。



これをもとにカレンダー形式に転記したいのですが、良い方法が思いつかなくて。



それでは文字列を結合して表示させてみましょう。
いくつか紹介しますので目的に合ったものを利用してください。
複数の文字列をつなげる式
文字を結合する式には次のものがあります。
①「&」を使用する
②CONCATENATE(セル指定)
③CONCAT(セル範囲指定)
④TEXTJOIN(挿入する文字列,空白セルの処理,セル範囲)


単純に結合する
式
文字列と文字列の間に何も入れず、セルを指定するのみの方法です。
① =B1&C1&D1&E1
② =CONCATENATE(B1,C1,D1,E1)
③ =CONCAT(B1:E1)
④ =TEXTJOIN(,FALSE,B1:E1)
結果


①と②の場合、文字列を結合したいセルを一つずつ指定しないといけません。その点、③の場合はセル範囲を指定するだけなのでより簡易な方法と言えます。
文字列をつなげるだけであれば、④の式は少々複雑なものになってしまいます。
結合する文字列の間に文字列を追加する
式
結合する文字列の間に「,」を入れることとします。
① =B1&”,”&C1&”,”&D1&”,”&E1
② =CONCATENATE(B1,”,”,C1,”,”,D1,”,”,E1)
③ なし
④ =TEXTJOIN(“,”,FALSE,B1:E1)
結果


①と②の場合、挿入する文字列が規則的でない場合有用ですが、セルと挿入する文字列を逐一指定しないといけない点が煩雑です。
③のCONCAT関数は、結合する文字列の間に文字列を挿入することはできません。
④のTEXTJOIN関数はセル範囲を指定できるので便利です。また挿入する文字列を複数種類のくり返しで挿入できる点が優れています。
これらの式で得られる結果について、空白のセルが含まれる場合、無視されず、挿入した文字列が重複します。
文字列を改行して結合する
式
① =B1&CHAR(10)&C1&CHAR(10)&D1&CHAR(10)&E1
② =CONCATENATE(B1,CHAR(10),C1,CHAR(10),D1,CHAR(10),E1)
③ なし
④ =TEXTJOIN(CHAR(10),FALSE,B1:E1)
結果
式を記入しただけでは次のような表記になります。


改行表示をするために、セルの書式設定から設定します。
「セルの書式設定」→「配置」タブ→「折り返して全体を表示する」にチェック


このような表示になります。


こちらも空白のセルは無視されません。
空白のセルについて
例題について、C1セルが空白だった場合について考えます。


式と結果


空白のセルを無視する
空白のセルを無視したい場合はTEXTJOIN関数を使います。
式
=TEXTJOIN(“,”,TRUE,B1:E1)
=TEXTJOIN(CHAR(10),TRUE,B1:E1)
結果




挿入する文字列を複数種類でループさせる
TEXTJOIN関数を使って、挿入する文字列を複数種類ループさせることができます。
式
=TEXTJOIN({“,”,”-“},FALSE,B1:E1)
結果
佐藤,鈴木-田中,
となります。
複数種類のループの中に改行などの式を含みたい場合
任意のセルに挿入する文字列や式を記入しておきます。
F1セル:,
G1セル:=CHAR(10)
とする場合。
式
=TEXTJOIN(F1:G1,FALSE,B1:E1)
結果
佐藤,鈴木
田中,
となります。



用途に合わせて使い分けしたいですね。


コメント