TEXTJOIN関数の基本的な使い方(スプレッドシート)
Googleスプレッドシートで「カンマ区切りのリストを作りたい」「空白セルを飛ばして名前を繋ぎたい」と思ったことはありませんか?
CONCATENATE関数や&演算子でも結合はできます。でも区切り文字をいちいち手で入れるのは面倒ですよね。セルが増えるほど数式が長くなって読みにくくなります。
そんなときに使うのがTEXTJOIN関数です。区切り文字を1か所で指定するだけで、まとめて結合してくれます。空白セルのスキップ機能もついているので、データに抜けがあっても安心ですよ。
読み方と語源
TEXTJOIN関数の読み方は「テキストジョイン」です。TEXT(文字列)とJOIN(結合する)を組み合わせた名前です。名前のとおり「文字列を結合する関数」と覚えてください。
構文と引数の説明
TEXTJOIN関数の構文はこちらです。
=TEXTJOIN(区切り文字, 空白を無視, テキスト1, [テキスト2, ...])
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 区切り文字 | 必須 | テキスト間に挿入する文字列(”,”や” “など) |
| 空白を無視 | 必須 | TRUEで空白セルをスキップ、FALSEでそのまま結合 |
| テキスト1 | 必須 | 結合したい文字列、セル参照、またはセル範囲 |
| テキスト2, … | 省略可 | 追加で結合したい文字列やセル範囲(最大252個) |
第1引数の区切り文字には空文字””も指定できます。区切りなしで結合したい場合に使ってください。
基本的な書き方の例
A1〜A4に「田中」「佐藤」「鈴木」「高橋」と入っている場合を見てみましょう。
=TEXTJOIN(", ", TRUE, A1:A4)
→ 「田中, 佐藤, 鈴木, 高橋」
カンマ+スペースを区切り文字に指定するだけで、きれいなリストが完成します。CONCATENATE関数なら=CONCATENATE(A1, ", ", A2, ", ", A3, ", ", A4)と書く必要がありますよね。TEXTJOINなら1か所で済むので数式がスッキリしますよ。
空白セルを無視するオプション(TRUE/FALSE)の違い
TEXTJOIN関数の第2引数はTRUEかFALSEを指定します。これが空白セル処理のカギです。違いを実例で確認してみましょう。
TRUEの場合(空白をスキップ)
A1〜A5に「東京」「」「大阪」「」「福岡」と入っている場合です。A2とA4が空白セルです。
=TEXTJOIN("/", TRUE, A1:A5)
→ 「東京/大阪/福岡」
空白セルが無視されて、区切り文字「/」が連続しません。データに抜けがあっても見た目がきれいに仕上がります。
FALSEの場合(空白もそのまま結合)
同じデータでFALSEを指定した場合です。
=TEXTJOIN("/", FALSE, A1:A5)
→ 「東京//大阪//福岡」
空白セルの位置にも区切り文字が入ります。結果として「/」が2つ連続してしまいます。
TRUE/FALSE 比較表
| 設定 | 空白セルの扱い | 結果の例 | おすすめの場面 |
|---|---|---|---|
| TRUE | スキップする | 東京/大阪/福岡 | 名簿・リスト・住所など |
| FALSE | そのまま結合 | 東京//大阪//福岡 | 空白位置を残したい場合 |
実務ではTRUEを使うことがほとんどです。FALSEが必要になるのは「空白の位置を明示的に残したい」という特殊なケースだけですよ。
TEXTJOIN関数の実務パターン集
カンマ区切りのリストを作る
メールの宛先一覧やタグリストを作るときに便利です。A列にメールアドレスが入っている場合はこう書きます。
=TEXTJOIN(", ", TRUE, A1:A10)
セルが10個でも20個でも、数式は変わりません。CONCATENATE関数では区切り文字を毎回手入力する必要があるので、数が多いほどTEXTJOINの便利さを実感できますよ。
複数列を1つの文字列にまとめる
A列に都道府県、B列に市区町村、C列に番地が入っている住所データの場合です。
=TEXTJOIN("", TRUE, A2:C2)
区切り文字に空文字””を指定すると、区切りなしで結合できます。住所の場合はスペースを入れたくないので、この書き方がぴったりです。
マンション名(D列)が空のレコードがあっても大丈夫です。
=TEXTJOIN("", TRUE, A2:D2)
→ D列が空なら「東京都渋谷区1-2-3」
→ D列があれば「東京都渋谷区1-2-3ABCマンション101」
TRUEを指定しているので、空白セルは自動でスキップされます。
条件付きで結合する(IF + TEXTJOIN)
IF関数と組み合わせると、条件に合うデータだけを結合できます。これはTEXTJOIN関数の応用テクニックです。
A列に名前、B列に部署が入っているとします。「営業部」のメンバーだけをカンマ区切りで結合する数式です。
=TEXTJOIN(", ", TRUE, IF(B2:B10="営業部", A2:A10, ""))
IF関数が「営業部なら名前を返し、違えば空文字を返す」という配列を作ります。TEXTJOINはその結果からTRUEで空文字をスキップして結合します。
Googleスプレッドシートは自動で配列を展開するので、特別な操作は不要です。Ctrl+Shift+Enterを押す必要もありませんよ。
IF + TEXTJOIN の活用場面
部署別の名前リスト、カテゴリ別の商品一覧、担当者別のタスク一覧など、フィルタリング+結合のパターンに幅広く使えます。
CONCATENATE・CONCAT・&演算子との違い
4方法比較表
スプレッドシートの文字列結合方法を表にまとめました。
| 方法 | セル範囲 | 区切り文字 | 空白スキップ | 引数上限 |
|---|---|---|---|---|
| TEXTJOIN | 対応 | 自動(第1引数で指定) | 対応(第2引数で制御) | 252 |
| CONCAT | 対応 | 手動(毎回指定) | 不可 | なし |
| CONCATENATE | 非対応 | 手動(毎回指定) | 不可 | 30 |
| & 演算子 | 非対応 | 手動(毎回指定) | 不可 | なし |
TEXTJOINだけが区切り文字の自動挿入と空白スキップに対応しています。
どれを使うか ── 判断フロー
次の基準で選んでみてください。
- セルが2〜3個でシンプルに結合 → & 演算子
- セル範囲をまとめて区切りなしで結合 → CONCAT
- 区切り文字を自動で入れたい → TEXTJOIN
- 空白セルをスキップしたい → TEXTJOIN
- 古いExcelファイルとの互換性が必要 → CONCATENATE
区切り文字か空白スキップのどちらかが必要なら、迷わずTEXTJOINを選んでください。CONCATENATE関数の基本を学んだあとのステップアップとしてぴったりです。CONCAT関数との違いも合わせて確認しておくと使い分けに迷わなくなりますよ。
よくあるエラーと対処法
| エラー・症状 | 原因 | 対処法 |
|---|---|---|
| #VALUE! エラー | 結合結果が32,767文字を超えた | 結合する範囲を分割する |
| 区切り文字が2つ連続する | 第2引数がFALSEで空白セルがある | TRUEに変更して空白をスキップ |
| 数値がシリアル値になる | 日付セルをそのまま渡した | TEXT関数で書式変換してから結合 |
| 結果が空になる | 指定範囲のセルがすべて空 | データの入力範囲を確認する |
日付の書式変換はこう書きます。
=TEXTJOIN("/", TRUE, TEXT(A2, "yyyy"), TEXT(B2, "m"), TEXT(C2, "d"))
日付の表示形式は結合時に失われます。TEXT関数で明示的に指定するのを忘れないでくださいね。結合後のスペース処理にはTRIM関数も覚えておくと便利ですよ。
まとめ
TEXTJOIN関数は、区切り文字を1か所で指定できる文字列結合の決定版です。
おさらいです。
- 第1引数で区切り文字を一括指定(カンマ、スペース、スラッシュなど)
- 第2引数でTRUEを指定すれば空白セルを自動スキップ
- セル範囲に対応しているので、セルが増えても数式は変わらない
- IF関数との組み合わせで条件付き結合もできる
- 実務ではTRUE指定がほとんど。迷ったらTRUEで大丈夫
CONCATENATE関数や&演算子から始めた方も、区切り文字や空白処理が必要になったらTEXTJOINに切り替えてみてください。数式がスッキリして管理もラクになりますよ。
