概要
「空欄セルは飛ばして、値が入っているセルだけを区切り文字でつなぎたい」
「住所やラベルを作りたいけど、抜けている項目があっても“変な区切り”を出したくない」
そんなときに最強なのが TEXTJOIN 関数の “空白無視” 機能です。
TEXTJOIN は、複数のセル・文字列を区切り文字で連結しつつ、「空白セルを無視する」ことができます。
ここでは、プログラミング初心者向けに、空白除外結合に特化した TEXTJOIN の使い方と、実務でそのまま使える“型”を解説します。
TEXTJOINの基本(空白除外の仕組み)
TEXTJOIN の構文はこうです。
=TEXTJOIN(区切り文字, 空白を無視するか, 文字列1, [文字列2]…)
第2引数 「空白を無視するか」 がポイントで、
- TRUE にすると「空白セル・空文字
""を無視」 - FALSE にすると空白セルも「何もない要素」として扱い、区切りだけが残ることがある
つまり、空白除外結合をしたいときは必ず TRUE にします。
例として、
A2:りんご
B2:(空欄)
C2:みかん
この3つを「 / 」でつなぎたいとき、
=TEXTJOIN(" / ", TRUE, A2:C2)
とすれば、結果は
りんご / みかん
となり、B2 の空白は自動でスキップされ、余計な「 / 」も出ません。
基本パターン:空欄を飛ばして“住所”や“ラベル”をつなぐ
住所の典型パターンで考えてみます。
A2:都道府県
B2:市区町村
C2:番地
D2:建物名(空のことも多い)
これらを、建物名があってもなくても、きれいに 1 つの文字列にしたいとします。
例:
- 「東京都」「江東区」「1-2-3」「〇〇ビル 5F」
→ 東京都江東区1-2-3〇〇ビル 5F - 「東京都」「江東区」「1-2-3」「(空)」
→ 東京都江東区1-2-3
区切り文字を空文字 "" にし、空白除外を TRUE にするとこう書けます。
=TEXTJOIN("", TRUE, A2:D2)
- 区切り文字:
""(何も挟まない) - 空白無視:TRUE(建物名が空でも何も入れない)
- テキスト範囲:A2:D2 を順番に結合
これだけで、「空欄を飛ばしながら連結」が実現できます。
応用1:区切り文字つきで空白を除外する
今度は、区切り文字を入れるパターンです。
A2:タグ1(例:重要)
B2:タグ2(例:至急)
C2:タグ3(空欄のこともある)
これらを、
- 「重要|至急|社外秘」
- 「重要|至急」
- 「重要」
のように、空欄タグを飛ばしつつ「|」で連結したい場合、D2 にこう書きます。
=TEXTJOIN("|", TRUE, A2:C2)
C2 が空欄なら、自動的にスキップされるので、
「重要|至急|」のような“末尾だけ区切りが残る”事故を防げます。
応用2:IFで「条件に合うものだけ」を結合する
TEXTJOIN は「空白を無視」するので、
IF と組み合わせると「条件に合うときだけ文字列を渡す → それ以外は “” → TEXTJOIN が除外」という流れが作れます。
A2:C2 にフラグ(OK/NG)や条件付きの値が入っていて、
「OK のものだけをカンマ区切りで並べたい」ようなケースをイメージしてください。
例えば、
A2:OK
B2:NG
C2:OK
というとき、「A と C だけ」を結合したい場合、行全体では行列関数が必要になるので、ここでは“個別に IF を書く”パターンを紹介します。
A3:項目A
B3:項目B
C3:項目C
D3 にこう書きます。
=TEXTJOIN("、", TRUE,
IF(A2="OK",A3,""),
IF(B2="OK",B3,""),
IF(C2="OK",C3,"")
)
- A2 が OK なら A3 を渡す、そうでなければ “”
- TEXTJOIN の「空白無視=TRUE」により、”” は自動で除外
結果:
- A2=OK, B2=NG, C2=OK → 「項目A、項目C」
- A2=NG, B2=NG, C2=OK → 「項目C」
のように、条件に合うものだけをきれいに結合できます。
応用3:改行区切りで“空白を除いたリスト”を1セルに作る
A2:A6 にタスクリストがあり、空欄も混ざっているとします。
A2:資料作成
A3:(空欄)
A4:メール送信
A5:会議準備
A6:(空欄)
これらを空欄を除いて、1セルにこう表示したい。
資料作成
メール送信
会議準備
B2 に次の式を書きます。
=TEXTJOIN(CHAR(10), TRUE, A2:A6)
- 区切り文字:CHAR(10)(改行コード)
- 空白無視:TRUE
- 範囲:A2:A6
セルの書式で「折り返して全体を表示する」にチェックを入れると、
1セルに“空欄を除いた縦リスト”ができます。
コピーしてメールやチャットに貼る、といった用途にも便利です。
応用4:項目名付きのラベルを空白除外でつなぐ
A2:担当者名(必須)
B2:部署(空欄のことあり)
C2:内線番号(空欄のことあり)
これらから、可能なら
- 「担当:山田|部署:営業|内線:1234」
- 「担当:山田|部署:営業」
- 「担当:山田|内線:1234」
のようなラベルを作りたい。
空の項目は丸ごと飛ばして、余計な区切りも出したくない。
D2 にこう書きます。
=TEXTJOIN("|", TRUE,
"担当:" & A2,
IF(B2<>"","部署:" & B2,""),
IF(C2<>"","内線:" & C2,"")
)
- 担当は必須なのでそのまま渡す
- 部署・内線は「値があるときだけ文字列」「ないときは “”」
- TEXTJOIN が “” を無視して、必要なものだけ「|」で連結
これが、実務でよく使う「空白除外ラベル生成」の標準パターンです。
空白除外結合の“型”まとめ
空欄を飛ばして横に結合
=TEXTJOIN(区切り文字, TRUE, 範囲)
空欄を飛ばして縦(改行)に結合
=TEXTJOIN(CHAR(10), TRUE, 範囲)
条件付きで「渡すかどうか」を決めてから TEXTJOIN
=TEXTJOIN("区切り", TRUE,
IF(条件1,値1,""),
IF(条件2,値2,""),
IF(条件3,値3,"")
)
この3つの型を押さえておけば、
「空欄が混ざっているけど、きれいに結合したい」場面のほとんどを TEXTJOIN だけで処理できます。
問題1
A2:りんご
B2:(空欄)
C2:みかん
これらを、空欄を飛ばして
りんご / みかん
という文字列にしたいです。
TEXTJOIN を使った式を書いてください。
=TEXTJOIN(" / ",TRUE,A2:C2)
問題2
A2:A5 にタスク名が入っています(途中は空欄の可能性あり)。
空欄を除いたタスクを、改行区切りで 1 つのセルに結合したいです。
TEXTJOIN を使った式を書いてください。
(改行には CHAR(10) を使います)
=TEXTJOIN(CHAR(10),TRUE,A2:A5)
問題3
A2:担当者名
B2:部署(空欄のことあり)
C2:内線(空欄のことあり)
これらから、空欄を飛ばして
担当:山田|部署:営業|内線:1234
のようなラベルを作りたいです。
部署・内線が空欄なら、その項目ごと表示しないようにしてください。
TEXTJOIN と IF を使った式を書いてください。
=TEXTJOIN("|",TRUE,
"担当:" & A2,
IF(B2<>"","部署:" & B2,""),
IF(C2<>"","内線:" & C2,"")
)
問題4
A2:C2 にキーワードが入っています(空欄も混ざる)。
これらを空欄を除いて「、」区切りで結合し、キーワード1、キーワード2、キーワード3
のようにしたいです。
TEXTJOIN を使った式を書いてください。
=TEXTJOIN("、",TRUE,A2:C2)
問題5
A2:C2 にそれぞれ、条件付きで表示したい項目があります。
- 条件1:D2=”Y” のときだけ A2 を使う
- 条件2:E2=”Y” のときだけ B2 を使う
- 条件3:F2=”Y” のときだけ C2 を使う
「Y」になっている項目だけを「|」区切りで結合したいです。
TEXTJOIN と IF を使った式を書いてください。
=TEXTJOIN("|",TRUE,
IF(D2="Y",A2,""),
IF(E2="Y",B2,""),
IF(F2="Y",C2,"")
)
空白除外結合は、TEXTJOIN の 第2引数を TRUE にするだけで、驚くほどスッキリ書けます。
「空欄が混ざるのがわかっている結合」は、まず TEXTJOIN を思い出す、くらいの感覚になっておくと、表設計のストレスがかなり減ります。
