目次
Excelでテキストを結合するTEXTJOIN関数の使い方を、実践例を交えてご紹介します。
これまでExcelでは、セルの内容を結合する方法として、連結演算子とCONCATENATE関数の2つが一般的でした。 しかし、TEXTJOINの登場により、より柔軟に、任意の区切り文字を含むテキストを結合できるようになったように思います。 しかし、実はそれ以外にも多くのメリットがあるのです!
エクセルTEXTJOIN関数
ExcelのTEXTJOINは、複数のセルや範囲のテキスト文字列を結合し、結合した値を指定した区切り文字で区切ります。 結果に空のセルを無視したり、含めたりすることもできます。
本機能は、Office 365版Excel、Excel 2021、Excel 2019で利用可能です。
TEXTJOIN関数のシンタックスは以下のとおりです。
TEXTJOIN(delimiter, ignore_empty, text1, [text2], ...)どこで
- デリミタ (必須) - 結合する各テキスト値の区切り文字。 通常は、二重引用符で囲まれたテキスト文字列、またはテキスト文字列を含むセルへの参照として与えられる。 区切り文字として与えられる数値は、テキストとして扱われる。
- Ignore_empty (必須) - 空のセルを無視するかどうかを決定します。
- TRUE - 空白のセルを無視します。
- FALSE - 結果の文字列に空のセルが含まれます。
- テキスト1 (必須) - 結合する最初の値。 テキスト文字列、文字列を含むセルへの参照、またはセル範囲のような文字列の配列として提供することができます。
- テキスト2 , ... (オプション) - 結合される追加のテキスト値。 最大252個のテキスト引数が可能です。 テキスト1 .
例として、セルB2、C2、D2のアドレス部分をカンマとスペースで区切って1つのセルにまとめてみましょう。
CONCATENATE関数では、各セルを個別に指定し、それぞれの参照の後にデリミタ(", ")を付ける必要があり、多数のセルの内容を結合するときに面倒なことがあります。
=concatenate(a2, ", ", b2, ", ", c2)
ExcelのTEXTJOINでは、第1引数で区切り文字を1回だけ指定し、第3引数でセル範囲を指定します。
=textjoin(", ", true, a2:c2)
ExcelでTEXTJOIN - 6つの注意点
TEXTJOINをワークシートに効果的に使用するためには、いくつかの注意点があります。
- TEXTJOINは、Excel 2019 - Excel 365でのみ使用できる新しい関数です。 それ以前のExcelバージョンでは、CONCATENATE関数または「&」演算子を代わりに使用してください。
- Excelの新しいバージョンでは、CONCAT関数を使用して、別々のセルや範囲から値を連結することもできますが、区切り文字や空のセルに対するオプションはありません。
- のためにTEXTJOINに供給された任意の番号。 デリミタ または テキスト の引数はテキストに変換されます。
- もし デリミタ が指定されないか、または空文字列("")である場合、テキスト値はデリミタなしで連結される。
- この関数は、最大252個のテキスト引数を扱うことができる。
- この制限を超えると、TEXTJOIN式は#VALUE!エラーを返します。
Excelでテキストを結合する方法 - 計算式の例
TEXTJOINの長所をよりよく理解するために、実際の場面でどのようにこの機能を使うかを見てみましょう。
カラムをカンマ区切りリストに変換する
カンマやセミコロンなどの区切り文字で区切られた縦書きのリストを連結する場合、TEXTJOINは適切な関数です。
今回は、下の表から各チームの勝敗を連結することにします。 連結するセルの範囲が異なるだけで、次のような数式でできます。
チーム1の場合。
=textjoin(",", false, b2:b6)
チーム2の場合。
=textjoin(",", false, c2:c6)
といった具合に。
すべての式において、以下の引数が使用される。
- デリミタ - カンマ(",")で区切ってください。
- Ignore_empty をFALSEに設定することで、空のセルも含めることができます。
その結果、各チームの勝敗を表す4つのカンマ区切りのリストがコンパクトに表示されます。
異なる区切り記号を持つセルの結合
結合された値を異なる区切り文字で区切る必要がある場合、複数の区切り文字を配列定数として与えるか、各区切り文字を別々のセルに入力し、範囲参照で デリミタ の議論になります。
異なる名前の部分を含むセルを結合して、このような形式で結果を得たいとします。 ラストネーム , ファーストネーム ミドルネーム .
このように、Last nameとFirst nameはカンマとスペース(", ")で、First nameとMiddle nameはスペース(" ")だけで区切られています。 そこで、この二つの区切り文字を配列定数{", "," "}に含めて、次の式を得ました。
=textjoin({", "," "}, true, a2:c2)
ここで、A2:C2 は結合される名前部分である。
あるいは、空のセルに引用符なしで区切り文字を入力し(例えば、F3にはカンマとスペース、G3にはスペース)、範囲$F$3:$G$3(セルの絶対参照に注意してください)を使用して、区切り文字を入力することもできます。 デリミタ の議論になります。
=textjoin($f$3:$g$3, true, a2:c2)
この一般的な方法を用いることで、様々な形でセルの内容を結合することができます。
例えば、結果を 氏名 ミドルイニシャル ラストネーム というフォーマットで入力し、LEFT関数でセルC2から最初の文字(イニシャル)を抽出します。 区切り記号は、First nameとMiddle initialの間にスペース(" ")、InitialとLast nameの間にピリオドとスペース(":
=textjoin({" ",". "}, true, b2, left(c2,1), a2)
Excelでテキストと日付を結合する
テキストと日付を結合する場合、TEXTJOIN式に直接日付を与えてもうまくいきません。 覚えているかもしれませんが、Excelは日付を通し番号として保存するので、以下のスクリーンショットに示すように、数式は日付を表す数字を返します。
=textjoin(" ", true, a2:b2)
そこで、TEXT関数に書式コード(ここでは "mm/dd/yyyy")を指定して、結合する必要があります。
=TEXTJOIN(" ", TRUE, A2, TEXT(B2, "mm/dd/yyyy"))
テキストを改行しながら結合する
Excelでテキストを結合し、各値が改行されるようにするには、区切り文字としてCHAR(10)を使用します(10はラインフィード文字です)。
例えば、セルA2とB2のテキストを改行で区切って結合する場合、次のような数式を使用します。
=textjoin(char(10), true, a2:b2)
ヒント:上のスクリーンショットのように結果を複数行で表示するには、テキストの折り返し機能がオンになっていることを確認してください。
テキストを条件付きで結合するTEXTJOIN IF
ExcelのTEXTJOINは文字列の配列を扱うことができるため、2つ以上のセルの内容を条件付きで結合することもできます。 それをさせるには、IF関数を使ってセルの範囲を評価し、条件を満たした値の配列を テキスト1 TEXTJOINの引数です。
下のスクリーンショットに示すテーブルから チーム1 これを実現するために、以下の IF 文を テキスト1 の議論になります。
if($b$2:$b$9=1, $a$2:$a$9, "")
わかりやすく言うと、「B列が1になったら、同じ行のA列の値を返し、それ以外は空文字列を返す」という式です。
の完全な公式は、以下の通りです。 チーム1 はこのような形になっています。
=textjoin(", ", true, if($b$2:$b$9=1, $a$2:$a$9, ""))
のメンバをカンマ区切りで取得することもできます。 チーム 2:
=textjoin(", ", true, if($b$2:$b$9=2, $a$2:$a$9, ""))
注)Excel 365と2021で利用できる動的配列機能のため、上のスクリーンショットにあるように通常の数式として動作します。 Excel 2019では、従来の配列数式としてCtrl + Shift + Enterショートカットキーで入力する必要があります。
カンマ区切りのリストで複数のマッチを検索して返す
ご存知のように、ExcelのVLOOKUP関数は、最初に見つかったマッチングを返すだけです。 しかし、特定のIDやSKUなどのマッチングをすべて取得する必要がある場合はどうしたらよいでしょうか。
結果を別々のセルに出力するには、「Excelで複数の値をVLOOKUPする方法」で説明した数式のいずれかを使用します。
1 つのセル内の一致するすべての値を検索し、カンマ区切りのリストとして返すには、TEXTJOIN IF 式を使用します。
実際にどのように動作するかを見るために、以下のサンプルテーブルから、指定された販売者が購入した商品のリストを取得してみましょう。 これは以下の式で簡単に行うことができます。
=textjoin(", ", true, if($a$2:$a$12=d2, $b$2:$b$12, ""))
ここで、A2:A12は販売者名、B2:B12は商品、D2は関心のある販売者である。
上記の数式は E2 に移動し、D2 (Adam)にある対象販売者のすべての一致をもたらします。 相対セル参照 (対象販売者) と絶対セル参照 (販売者名と製品) をうまく使用することにより、数式は以下のセルに正しくコピーされ、他の 2 つの販売者にもうまく適用されます。
注)先ほどの例と同様に、Excel 365および2021では通常の数式として、Excel 2019ではCSE数式(Ctrl + Shift + Enter )として動作します。
この式のロジックは、前の例と全く同じです。
IF文は、A2:A12の各名称とD2のターゲット名(この例ではAdam)を比較する。
if($a$2:$a$12=d2, $b$2:$b$12, "")
論理テストの結果が TRUE (すなわち D2 の名前が A 列の名前と一致する) ならば、この式は B 列からの積を返し、そうでなければ空文字列 ("") を返す。 IF の結果は以下の配列である。
{"";"";"Bananas";"Apples";"";"";"";"Oranges";"";"Lemons";""}
この配列は、TEXTJOIN関数に テキスト1 そして、TEXTJOINは値をカンマとスペース(", ")で区切るように設定されているため、最終的にはこのような文字列が得られます。
バナナ、りんご、オレンジ、レモン
ExcelのTEXTJOINが動作しない
TEXTJOINの計算式がエラーになる場合、以下のいずれかの可能性が高いと思われます。
- この関数がサポートされていない古いバージョンのExcel(2019年以前)でTEXTJOINを使用した場合、または関数名のスペルが間違っている場合、#NAME?エラーが発生します。
- 結果の文字列が32,767文字を超えると、#VALUE!エラーが発生します。
- また、CHAR(0)のような印字不可能な文字を入力した場合など、Excelが区切り文字をテキストとして認識しない場合にも#VALUE!エラーが発生します。
以上、エクセルでTEXTJOIN関数を使う方法でした。 読んでいただきありがとうございました!来週のブログもよろしくお願いします。
ダウンロード可能なもの
ExcelのTEXTJOINの計算式の例