概要
複数のセルにバラバラに入っている値を、山田,東京都,30,営業 のような CSV形式の1つの文字列 にまとめたい。
- A列の値をカンマ区切りで1本の文字列にしたい
- 「空欄セルは飛ばして結合したい」
- 行・列どちらでも一気に結合したい
こういうときにドンピシャで使えるのが TEXTJOIN 関数です。
TEXTJOIN 関数の基本
構文と意味
=TEXTJOIN(区切り文字, 空白を無視するか, 結合したい範囲1, [範囲2]...)
- 区切り文字
値と値の間に入れたい文字。CSVなら","を指定します。 - 空白を無視するか
TRUE… 空白セルを飛ばすFALSE… 空白セルも「空の値」として結合に含める。 - 結合したい範囲
1つのセルでも、A2:A10のような範囲でもOK。
TEXTJOIN は
「範囲+区切り文字+空白セルをどうするか」をまとめて指定できるのがポイントです。
基本パターン:1列の値をCSV文字列に結合
A列の値を「カンマ区切り1行」にする
例として、A2:A5 にこんなデータがあるとします。
A2:山田
A3:東京都
A4:30
A5:営業
これを 山田,東京都,30,営業 という1つのCSV文字列にしたい場合、
B2 に次の式を書きます。
=TEXTJOIN(",", TRUE, A2:A5)
意味を分解すると:
- 区切り文字 →
","(カンマ) - 空白を無視 →
TRUE(途中に空白セルがあっても飛ばす) - 結合範囲 →
A2:A5
結果:山田,東京都,30,営業
A列に何行あっても、範囲を変えるだけで
「縦に並んだ値 → 1本のCSV文字列」 が一発でできます。
横方向のセルをCSVに結合する
1行のデータをCSV化する
B2:E2 に
B2:001
C2:山田太郎
D2:東京都
E2:営業
と入っている場合、
これを 001,山田太郎,東京都,営業 にしたいときは、
F2 に次のように書きます。
=TEXTJOIN(",", TRUE, B2:E2)
- 横方向の範囲でも、縦と同じ書き方でOK。
- TRUE を指定すると、空白のセルは自動でスキップされます。
CSVファイルに出したい1行分のデータを、
「1つの行にまとめる“書き出し用列”」として使うイメージです。
空白セルの扱い(TRUE/FALSE の違い)
空白セルを飛ばしたいか、そのまま残したいか
例えば A2:A6 に
A2:山田
A3:(空白)
A4:東京都
A5:30
A6:(空白)
と入っているとします。
空白を飛ばして結合:
=TEXTJOIN(",", TRUE, A2:A6)
→ 山田,東京都,30(空白セルは無視)
空白も「空の値」として区切りだけ入れたい:
=TEXTJOIN(",", FALSE, A2:A6)
→ 山田,,東京都,30,(空白セルの位置にカンマだけ残る)
CSVとして厳密に「空の列も必要」なら FALSE、
単に「データがあるものだけつなげたい」なら TRUE を使います。
他の文字で区切る応用(タブ区切りなど)
CSVだけでなく、区切り文字を変えればいろいろ応用できます。
セミコロン区切り
=TEXTJOIN(";", TRUE, A2:A5)
→ 山田;東京都;30;営業
スペース区切り
=TEXTJOIN(" ", TRUE, A2:A5)
→ 山田 東京都 30 営業
改行で結合(複数行のテキストに)
セル内で改行しながら結合したいときは、
区切り文字に CHAR(10)(改行)を使い、セルの折り返しをオンにします。
=TEXTJOIN(CHAR(10), TRUE, A2:A5)
→ 1セルの中に
山田
東京都
30
営業
と縦に並ぶテキストができます。
問題1
A2:A5 に
山田 / 東京都 / 30 / 営業
というデータが縦に入っています。
これをカンマ区切りの1つの文字列 山田,東京都,30,営業 にしたいです。
TEXTJOIN を使った式を書いてください(空白セルは無視する前提)。
=TEXTJOIN(",",TRUE,A2:A5)
問題2
B2:E2 に
001 / 山田太郎 / 東京都 / 営業
が横方向に入っています。
これを 001,山田太郎,東京都,営業 というCSV形式の文字列にしたいです。
TEXTJOIN を使った式を書いてください。
=TEXTJOIN(",",TRUE,B2:E2)
問題3
A2:A6 に
山田 / (空白) / 東京都 / 30 / (空白)
が入っています。
空白セルも「空の列」として残し、山田,,東京都,30, のような文字列にしたいです。
TEXTJOIN の TRUE/FALSE を意識して式を書いてください。
=TEXTJOIN(",",FALSE,A2:A6)
問題4
A2:A5 に
山田 / 東京都 / 30 / 営業
が入っています。
これをセミコロン区切りの 山田;東京都;30;営業 にしたいです。
TEXTJOIN を使った式を書いてください。
=TEXTJOIN(";",TRUE,A2:A5)
問題5
A2:A5 に
山田 / 東京都 / 30 / 営業
が入っています。
これを 1 つのセル内で改行しながら結合したいです。
山田
東京都
30
営業
という見た目になるように、TEXTJOIN を使った式を書いてください。
(改行コードには CHAR(10) を使ってください)
=TEXTJOIN(CHAR(10),TRUE,A2:A5)
(※セルの「折り返して全体を表示する」をオンにすると改行表示されます)
TEXTJOIN の「CSV列結合」の型は、とてもシンプルです。
=TEXTJOIN(",", TRUE, 結合したい範囲)
この1行さえ覚えておけば、
- 1列の値 → CSV文字列
- 1行の値 → CSV文字列
を、どちらも一瞬で作れるようになります。
