Excel関数 逆引き集 | 文字列操作まとめ → TEXTJOIN

Excel
スポンサーリンク

概要

TEXTJOIN は
「複数の文字列を、指定した区切り文字で一気につなぐ」
ための関数です。

単なる「文字列の結合」だけでなく、

  • 氏名や住所の整形
  • CSV 形式やログ文の生成
  • SQL文やVBAコードの自動生成
  • 条件付きでの結合(空白セルを飛ばす など)

まで、文字列操作の“まとめ役”として非常に強力です。

ここでは、TEXTJOIN を中心にした「文字列操作まとめ」として、
基本から実務で使えるテンプレート、考え方を丁寧に整理します。


TEXTJOIN の基本

TEXTJOIN の書式は次の通りです。

=TEXTJOIN(区切り文字, 空白セルを無視するか, 結合したい文字列や範囲...)

区切り文字
結合の間に挟みたい文字。例えば「, 」「 / 」「改行」など。
空白セルを無視するか
TRUE:空白セルは飛ばして結合、FALSE:空白もそのまま含める。
結合したい文字列や範囲
直接文字列を書いてもいいし、A1:A10 のような範囲でもよい。

例えば、A1:A3 に「山田」「太郎」「様」が入っていて、スペース無しで結合したい場合。

=TEXTJOIN("", TRUE, A1:A3)

結果は「山田太郎様」となります。


区切り文字を使った基本的な文字列操作

カンマ区切りの一覧を作る

A2:A5 に「東京」「大阪」「名古屋」「福岡」が入っているとき、
「東京,大阪,名古屋,福岡」のような一覧を作りたい場合。

=TEXTJOIN(",", TRUE, A2:A5)

スペースも付けたいなら、

=TEXTJOIN(", ", TRUE, A2:A5)

とすれば「東京, 大阪, 名古屋, 福岡」となります。

改行でつなぐ(縦リスト → 複数行テキスト)

A2:A5 を「セル内で改行しながら」並べたいときは、区切りに改行コードを使います。

=TEXTJOIN(CHAR(10), TRUE, A2:A5)

セルの「折り返して全体を表示する」をオンにすれば、
1セルの中で縦に並んで見える「まとめテキスト」が作れます。


TEXTJOIN と他の文字列関数の組み合わせ

TEXTJOIN は「最後にまとめる役」で、その前段で他の関数と組み合わせると威力が増します。

TRIM や SUBSTITUTE で整形してからまとめる

例えば、A2:A5 にバラバラな表記の都市名があるとします。
前後スペースを削除してからカンマ区切りにする例。

B2 に次の式を入れて下へコピーします。

=TRIM(A2)

B列に整形済みの文字列ができたら、TEXTJOIN でまとめます。

=TEXTJOIN(", ", TRUE, B2:B5)

整形と結合を一発でやりたい場合は、TEXTJOIN の引数側で TRIM をかけるイメージで組み立てます(FILTER や BYROW と一緒に使う上級パターンもありますが、初心者向けとしては“中間列を作る”方法がわかりやすいです)。

TEXT と組み合わせて「表示形式をそろえて結合」

日付や数値を混ぜて、読みやすい文章やログを作るときは TEXT と相性抜群です。

B2 に日付、C2 に金額が入っているとして、

=TEXT(B2,"yyyy/mm/dd") & ":" & TEXT(C2,"#,##0") & "円"

のような文章を、複数行分まとめて1セルに表示したい場合、
まず D2:D10 に上の「1行分の文章」式を作り、それを TEXTJOIN します。

=TEXTJOIN(CHAR(10), TRUE, D2:D10)

これで「日付:金額円」の行が、改行付きでまとまります。


条件付きの文字列結合(空白セル無視・条件セルと組み合わせ)

TEXTJOIN の第2引数「空白セル無視」が、実務でかなり便利です。

空白セルを飛ばして結合する

A2:A6 に「名前の部品」が入っていて、
途中が空欄のことがあるとします(ミドルネームなど)。

例:
A2:山田
A3:(空白)
A4:太郎
A5:様
A6:(空白)

このとき、

=TEXTJOIN("", TRUE, A2:A6)

とすれば、空白を飛ばして「山田太郎様」となります。

第2引数を FALSE にすると、空白もそのまま扱われます。

=TEXTJOIN("", FALSE, A2:A6)

だと、空白も含めた結合になります。

条件を満たすものだけをつないでいく(基本の発想)

「OK の行だけを結合したい」のような場面では、
基本的には FILTER や IF などの配列式と組み合わせますが、
初心者向けには「条件を満たす文字列だけを別列に出し、それを TEXTJOIN する」という分かりやすい方法をよく使います。

例えば、B列にフラグ(OK/NG)、A列に名前。
OK の名前だけカンマ区切りにしたい場合:

C2 に次の式を入れて下へコピー。

=IF(B2="OK",A2,"")

そして、集約セルで

=TEXTJOIN(", ", TRUE, C2:C100)

とすれば、「OK の人の名前一覧」だけを簡単に作れます。


文字列操作テンプレート(TEXTJOIN中心)

ここまでの内容を「そのまま使える型」として整理します。

単純結合(区切りなし)

=TEXTJOIN("", TRUE, A2:A5)

カンマ区切り一覧

=TEXTJOIN(", ", TRUE, A2:A5)

改行区切り一覧(セル内改行)

=TEXTJOIN(CHAR(10), TRUE, A2:A5)

空白セルを飛ばして氏名+敬称を作る

=TEXTJOIN("", TRUE, A2:A4)

(A2:姓、A3:名、A4:様 など)

整形済み文字列のリストをまとめてログ化

=TEXTJOIN(CHAR(10), TRUE, D2:D50)

(D列に「日付+ユーザー+メッセージ」を TEXT などで整形しておく)


応用的な考え方:TEXTJOIN を「最後のまとめ役」として意識する

TEXTJOIN は、それ自体が複雑な処理をするのではなく、
「前段で作った“文字列の部品”を、きれいに並べる」係です。

つまり、

  1. 必要なら TRIM / SUBSTITUTE / TEXT / IF などで「部品」を整える
  2. 部品を縦(または横)に並べる
  3. TEXTJOIN で「どう並べるか?」だけを決める

この 3 ステップで考えると、設計がきれいになります。

「なんでもかんでも TEXTJOIN の中でやろう」とすると、
かえって式が読みにくくなるので、
慣れるまでは「中間列を使ってから TEXTJOIN」という構成がおすすめです。


例題

問題1

A2:A5 に
A2:東京
A3:大阪
A4:名古屋
A5:福岡
が入っています。
これらを「東京, 大阪, 名古屋, 福岡」という 1 つの文字列にしたいです。
TEXTJOIN を使った式を書いてください。

=TEXTJOIN(", ", TRUE, A2:A5)

問題2

A2:A4 に「姓」「名」「様」が入っており、
A3(名)が空欄の場合もあります。
空欄は無視して、「山田太郎様」や「山田様」のように結合したいです。
TEXTJOIN を使った式を書いてください。

=TEXTJOIN("", TRUE, A2:A4)

問題3

A2:A6 に複数行のメッセージ文があります。
これらを 1 セル内で改行しながら表示したいです(折り返し表示はオンにするとします)。
TEXTJOIN を使った式を書いてください。

=TEXTJOIN(CHAR(10), TRUE, A2:A6)

問題4

A列に名前、B列に「OK」または「NG」が入っています。
B列が「OK」の行だけの名前を、カンマ区切りで 1 セルに出したいです。
C列で IF を使って「OK のときだけ名前を出す」処理をし、
その C列を TEXTJOIN でまとめる想定で、TEXTJOIN 側の式を書いてください。

=TEXTJOIN(", ", TRUE, C2:C100)

問題5

D2:D10 に、すでに
=TEXT(…)+ユーザー名+メッセージ
の形で整形済みのログ文が入っています。
これらを 1 セルにまとめて、行ごとに改行して表示したいです。
TEXTJOIN を使った式を書いてください。

=TEXTJOIN(CHAR(10), TRUE, D2:D10)

TEXTJOIN は「文字列操作の最後のまとめ」の役目です。
前処理は他の関数に任せて、
最後に「どう並べたいか?」だけを TEXTJOIN に語りかける。
この意識を持つと、文字列操作全体の設計がぐっとクリアになります。

Excel
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました