=TEXTJOIN(", ",TRUE,A2:A6)は、A2:A6のすべてのセルを、項目の間にカンマとスペースを入れて1つの文字列にします。1つ目の引数は区切り文字、2つ目は空のセルを飛ばすかどうか、それ以降がつなぐ文字列です。
| A | B | C | |
|---|---|---|---|
| 1 | Team | Members | |
| 2 | Ana | Ana, Ben, Chen, Dara, Eli | |
| 3 | Ben | ||
| 4 | Chen | ||
| 5 | Dara | ||
| 6 | Eli |
A列の名前を1つ消してみてください。C2が更新され、カンマが2つ並ぶことはありません。TEXTJOINにはExcel 2019以降(Microsoft 365を含む)が必要で、Excel 2016では#NAME?になります。
TEXTJOIN関数の構文
=TEXTJOIN(delimiter, ignore_empty, text1, [text2], ...)
delimiter(区切り文字):項目の間に入れる文字列で、引用符で囲みます。", "、"; "、" | "、"-"、何も入れないなら""。ignore_empty(空のセルは無視):TRUEは空のセルを飛ばし、FALSEは残すので、区切り文字が2つ並びます。text1, text2, ...:セル、範囲、または引用符で囲んだ文字列。252個まで指定でき、範囲は行でも列でもブロックでも構いません。
ignore_emptyで空白セルを飛ばす
| A | B | C | |
|---|---|---|---|
| 1 | Size | Result | |
| 2 | S | S, M, L, XL | |
| 3 | S, , M, L, , XL | ||
| 4 | M | ||
| 5 | L | ||
| 6 | |||
| 7 | XL |
C2はS, M, L, XLになります。C3は2つの空のセルを残し、その隙間が, ,として表示されます。FALSEを使うのは、別のツールでリストを読み込むときなど、各項目の位置に意味がある場合だけにしてください。
同じ考え方で、ミドルネームがあったりなかったりする氏名も直せます。=A2&" "&B2&" "&C2はB2が空だとスペースが2つ残りますが、区切り文字をスペースにしてTRUEを指定したTEXTJOINなら残りません:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | First | Middle | Last | Full name |
| 2 | Ana | Maria | Silva | Ana Maria Silva |
| 3 | Ben | Okafor | Ben Okafor | |
| 4 | Chen | Li | Wu | Chen Li Wu |
| A | B | C | |
|---|---|---|---|
| 1 | Order | List | |
| 2 | 1041 | ||
| 3 | 1042 | ||
| 4 | |||
| 5 | 1045 | ||
| 6 | 1046 | ||
| 7 |
やってみよう: C2で、A2:A7の注文番号をカンマとスペースで区切って1つのセルにまとめてください。空のセルの分の隙間は入れません。
条件付きでTEXTJOINする
条件に合う行だけをつなぐには、TEXTJOINの中にFILTERを入れます。FILTERが一致する名前を返し、TEXTJOINがそれをつなぎます:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Name | Region | Region | Names | |
| 2 | Ana | North | North | Ana, Chen, Eli | |
| 3 | Ben | South | Ana, Chen, Eli | ||
| 4 | Chen | North | Regions | North, South, East | |
| 5 | Dara | East | |||
| 6 | Eli | North | |||
| 7 | Fay | South |
D2をSouthに変えると、どちらの数式もBenとFayを並べます。E2はFILTERを使っていて、Excel 2021かMicrosoft 365が必要です。E3はExcel 2019向けの書き方で、IFは地域が一致する行では名前を、それ以外では空の文字列を返し、TRUEがその空の文字列を取り除きます。Excel 2019ではE3をCtrl+Shift+Enter(MacではCmd+Shift+Enter)で確定してください。
よく必要になる組み合わせがあと2つあります:
- 重複を除いた値だけ:E4の
=TEXTJOIN(", ",TRUE,UNIQUE(B2:B7))はNorth, South, Eastになります。 - 並べ替えて:
=TEXTJOIN(", ",TRUE,SORT(FILTER(A2:A7,B2:B7=D2)))。
一致するものがないと、FILTERは#CALC!を返し、TEXTJOINも同じになります。その場合に備えてFILTERに3つ目の引数を渡します:FILTER(A2:A7,B2:B7=D2,"none")。
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Name | Region | East team | ||
| 2 | Ana | North | |||
| 3 | Ben | South | |||
| 4 | Chen | East | |||
| 5 | Dara | East | |||
| 6 | Eli | North | |||
| 7 | Fay | South |
やってみよう: E2で、地域がEastの名前をカンマとスペースで区切って並べてください。
日付や数値を表示形式どおりにつなげる
TEXTJOINがつなぐのは、セルに見えているものではなく保存されている値です。日付はシリアル値として(2026-03-02は46083)、パーセントは小数としてつながります。TEXTJOINの中でTEXTを使って範囲を変換します:
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Meeting | Date | Dates | |
| 2 | Kickoff | 2026-03-02 | 46083, 46097, 46113 | |
| 3 | Review | 2026-03-16 | Mar 2, Mar 16, Apr 1 | |
| 4 | Launch | 2026-04-01 |
TEXTJOINとCONCAT、&の違い
| TEXTJOIN | CONCAT | & | |
|---|---|---|---|
| 範囲をつなげる | できる | できる | できない、1セルずつ |
| 項目の間に区切り文字を入れる | できる、一度の指定ですべてに | できない | 毎回自分で入力する |
| 空のセルを飛ばす | できる、TRUEで | できない | できない |
| 使える最も古いバージョン | Excel 2019 | Excel 2019 | すべてのバージョン |
2つか3つのセルなら&がいちばん手早く済みます。文字列の結合を参照してください。長さを問わないリストにはTEXTJOINを使います。知っておくべき制限が1つあります。1つのセルに入るのは最大32,767文字で、つないだ文字列がそれより長いとTEXTJOINは#VALUE!を返します。
よくある質問
ExcelのTEXTJOINは何をする関数ですか?
セルや範囲の文字列をつなぎ、項目の間に区切り文字を入れます。=TEXTJOIN(", ",TRUE,A2:A6)は5つのセルを1つのカンマ区切りのリストにします。2つ目の引数のTRUEは空のセルを飛ばす指定です。
TEXTJOINで条件を付けるには?
FILTERを渡します。=TEXTJOIN(", ",TRUE,FILTER(A2:A7,B2:B7="North"))は、地域がNorthの名前だけをつなぎます。FILTERがないExcel 2019では、=TEXTJOIN(", ",TRUE,IF(B2:B7="North",A2:A7,""))をCtrl+Shift+Enterで確定します。
TEXTJOINが使えるExcelのバージョンは?
Excel 2019、Excel 2021、Microsoft 365、それにExcel for the webです。Excel 2016以前では#NAME?になるので、&でつないでください。GoogleスプレッドシートにもTEXTJOINがあります。
TEXTJOINで日付ではなく数値が表示されるのはなぜですか?
TEXTJOINは保存されている値をつなぎ、日付はシリアル値として保存されているからです。先に日付を変換します:=TEXTJOIN(", ",TRUE,TEXT(B2:B4,"mmm d"))。