Excelで複数セルのデータをまとめて1つの文字列にしたい場面、ありますよね。「報告書にデータを貼り付けたいけど、1セルずつコピーするのが面倒…」と感じたことはないでしょうか。
そのままだと、セルをひとつずつ手作業でつなげるしかなくて非効率です。
そんなときに便利なのが ARRAYTOTEXT関数 です。この関数を使えば、配列やセル範囲のデータをまとめて1つのテキストに変換できますよ。
この記事では、ARRAYTOTEXT関数の基本的な使い方から実務での活用例まで、わかりやすく解説していきます。
ExcelのARRAYTOTEXT関数とは
ARRAYTOTEXT関数は、配列やセル範囲のデータをテキスト形式に変換して返す関数です。読み方は「アレイ トゥ テキスト」です。Array(配列)をText(テキスト)に変換する、という意味がそのまま名前になっています。
たとえば、A1からA3に「田中」「太郎」「22」と入っている場合、ARRAYTOTEXT関数を使うと「田中, 太郎, 22」のように1つの文字列にまとめてくれます。
複数のセルに散らばったデータを1つにまとめたいときに活躍する関数ですよ。
なお、ARRAYTOTEXT関数は Microsoft 365 または Excel 2021 以降で利用できます。お使いのバージョンが対応しているか、確認しておきましょう。
ARRAYTOTEXT関数の構文と引数
基本構文
=ARRAYTOTEXT(配列, [書式])
引数は2つありますが、必須なのは「配列」だけです。「書式」は省略できます。
引数の詳細
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 配列 | 必須 | テキストに変換したいセル範囲または配列 |
| 書式 | 省略可 | 出力形式を指定する。0(簡潔形式)または1(厳格形式) |
書式オプションの違い
書式の指定によって、出力されるテキストの形が変わります。ここがARRAYTOTEXT関数のポイントです。
書式 = 0(簡潔形式 / デフォルト)
省略時はこちらが適用されます。セルの表示そのままの値がカンマ区切りで並びます。
=ARRAYTOTEXT(A1:A3, 0)
→ 田中, 太郎, 22
見た目がシンプルなので、報告書やメール本文にそのまま貼り付けたいときに向いています。
書式 = 1(厳格形式)
中括弧で囲まれ、文字列にはダブルクォーテーションが付きます。数値はそのまま表示されますよ。
=ARRAYTOTEXT(A1:A3, 1)
→ {"田中","太郎",22}
厳格形式は、出力結果を別の数式に渡したいときに便利です。データ型が明確になるので、文字列と数値を区別しやすくなります。
ARRAYTOTEXT関数の基本的な使い方
実際にARRAYTOTEXT関数を使ってみましょう。ここでは、よくある使い方を3つ紹介します。
セル範囲を指定する
もっとも基本的な使い方です。データが入ったセル範囲をそのまま指定します。
=ARRAYTOTEXT(A1:C1)
→ 田中, 太郎, 営業部
横方向・縦方向のどちらの範囲でも同じように動作します。
2次元の範囲を指定する
行と列にまたがる範囲も指定できます。
=ARRAYTOTEXT(A1:C3)
→ 田中, 太郎, 営業部, 鈴木, 花子, 総務部, 佐藤, 一郎, 経理部
複数行のデータもカンマ区切りで1行にまとめてくれます。データの一覧をさっと確認したいときに使えますよ。
配列定数を直接指定する
セル参照ではなく、配列定数を直接指定することもできます。
=ARRAYTOTEXT({"東京","大阪","名古屋"})
→ 東京, 大阪, 名古屋
数式の中でちょっとした文字列を組み立てたいときに覚えておくと便利です。
ARRAYTOTEXT関数の活用例
ここからは、実務で役立つ活用例を紹介していきます。
担当者名の一覧を1セルにまとめる
プロジェクトの担当者リストが縦に並んでいるとき、報告書用に1セルにまとめるケースです。
=ARRAYTOTEXT(B2:B6)
→ 田中, 鈴木, 佐藤, 山田, 高橋
これなら、報告資料にコピー&ペーストするだけで済みますよね。
TEXTJOIN関数との組み合わせ
区切り文字を自由にカスタマイズしたい場合は、TEXTJOIN関数を使うのがおすすめです。
ARRAYTOTEXTはカンマ区切り固定ですが、TEXTJOINなら区切り文字を「/」や「・」に変えられます。
=TEXTJOIN("・", TRUE, B2:B6)
→ 田中・鈴木・佐藤・山田・高橋
用途に応じて使い分けてみてください。
厳格形式を活用したデータ加工
厳格形式(書式=1)の出力は、データの受け渡しに活用できます。
=ARRAYTOTEXT(A1:A3, 1)
→ {"商品A","商品B","商品C"}
この形式は、VBAやPower Queryにデータを渡すときの入力として使えるケースがあります。データ型が明確なので、加工時のトラブルを減らせますよ。
FILTER関数・SORT関数との組み合わせ
ARRAYTOTEXT関数は、FILTER関数やSORT関数と組み合わせると、絞り込み・並べ替えをした結果を1つの文字列として取り出せます。
条件に合う名前リストだけを1セルにまとめる
A列に部署名、B列に担当者名がある場合、「営業部」の担当者だけをカンマ区切りで抽出するには次のように書きます。
=ARRAYTOTEXT(FILTER(B2:B10, A2:A10="営業部"))
→ 田中, 鈴木, 高橋
FILTER関数が条件に合う行だけを取り出し、ARRAYTOTEXTがその結果を1つのテキストにまとめます。フィルター後の結果をそのまま議事録や報告書に貼り付けられるのが便利ですよ。
五十音順に並べ替えてから結合する
=ARRAYTOTEXT(SORT(B2:B6))
→ 鈴木, 田中, 高橋, 佐藤, 山田(五十音順)
SORT関数で並べ替えた配列をそのまま渡せるので、別のセルに作業列を作る必要がありません。
ARRAYTOTEXT関数とVALUETOTEXT関数の違い
ARRAYTOTEXT関数と似た関数に、VALUETOTEXT関数があります。名前が似ているので混同しやすいですが、違いはシンプルです。
| 項目 | ARRAYTOTEXT | VALUETOTEXT |
|---|---|---|
| 対象 | 配列・セル範囲(複数セル) | 単一の値(1つのセル) |
| 出力 | 複数の値をまとめた文字列 | 1つの値をテキストに変換 |
| 書式オプション | 0(簡潔)/ 1(厳格) | 0(簡潔)/ 1(厳格) |
ざっくり言うと、 複数のデータをまとめたいならARRAYTOTEXT、1つの値を変換したいならVALUETOTEXT と覚えておけば大丈夫ですよ。
また、文字列を結合する関数としてはCONCAT関数もあります。CONCAT関数はセル範囲の値を区切り文字なしで結合するので、カンマ区切りが不要な場合はこちらも検討してみてください。
テキスト変換関連の関数を目的別に整理すると、次のようになります。
| やりたいこと | 使う関数 |
|---|---|
| 配列をテキストにまとめる | ARRAYTOTEXT |
| 1つの値をテキストに変換する | VALUETOTEXT |
| 区切り文字を自由に指定して結合する | TEXTJOIN |
| 区切り文字なしで文字列を結合する | CONCAT |
| 数値や日付を表示形式付きでテキスト化する | TEXT |
| テキストを区切り文字で分割する | TEXTSPLIT |
ARRAYTOTEXT関数の注意点とエラー対処
対応バージョンに注意
ARRAYTOTEXT関数はMicrosoft 365またはExcel 2021以降でのみ利用できます。それ以前のバージョンでは #NAME? エラーが表示されます。
もし #NAME? エラーが出たら、まずExcelのバージョンを確認してみてください。バージョンが対応していない場合は、TEXTJOIN関数で代用できます。
空白セルの扱い
配列の中に空白セルがある場合、簡潔形式(書式=0)ではスキップされずにカンマの間が空になります。
A1: 田中、A2: (空白)、A3: 佐藤 の場合
=ARRAYTOTEXT(A1:A3)
→ 田中, , 佐藤
空白を除外したい場合は、TEXTJOIN関数の第2引数に TRUE を指定する方法が便利ですよ。
=TEXTJOIN(", ", TRUE, A1:A3)
→ 田中, 佐藤
大量データの場合
変換対象のセル数が多いと、結果の文字列が非常に長くなります。Excelのセルに格納できる文字数は32,767文字が上限なので、大量データの場合は範囲を区切って使いましょう。
GoogleスプレッドシートでARRAYTOTEXTを使いたい場合
ARRAYTOTEXT関数はExcel専用の関数で、Googleスプレッドシートには搭載されていません。スプレッドシートで同様の処理をしたい場合は、JOIN関数 か TEXTJOIN関数 が代替になります。
Sheetsでの代替方法
| Excelの数式 | Sheetsの代替 |
|---|---|
=ARRAYTOTEXT(A1:A5) | =JOIN(", ", A1:A5) |
=ARRAYTOTEXT(A1:A5, 0) | =TEXTJOIN(", ", FALSE, A1:A5) |
| 空白を除外したい場合 | =TEXTJOIN(", ", TRUE, A1:A5) |
ExcelのファイルをスプレッドシートでそのまMA開くと、ARRAYTOTEXT関数は #NAME? エラーになります。スプレッドシートで使い続ける場合は、上記の代替関数に置き換えておくとスムーズです。
よくある質問(FAQ)
Q. ARRAYTOTEXT関数はGoogleスプレッドシートでも使えますか?
使えません。ARRAYTOTEXT関数はMicrosoft 365またはExcel 2021以降専用です。Googleスプレッドシートでは =JOIN(", ", A1:A5) または =TEXTJOIN(", ", FALSE, A1:A5) が代替になります。
Q. 区切り文字をカンマ以外に変えることはできますか?
ARRAYTOTEXT関数の区切り文字はカンマ固定で変更できません。スラッシュや読点など別の区切り文字を使いたい場合は、TEXTJOIN関数を使ってください。=TEXTJOIN("/", TRUE, A1:A5) のように第1引数で自由に指定できます。
Q. 空白セルを除外してまとめるにはどうすればよいですか?
ARRAYTOTEXT関数では空白セルを自動除外できません。空白を除外したい場合は =TEXTJOIN(", ", TRUE, A1:A10) を使ってください。TEXTJOINの第2引数を TRUE にすると、空白セルを自動スキップします。
Q. FILTER関数と組み合わせるとどのような場面で使えますか?
条件に合うデータだけを抽出してから1つの文字列にまとめる場面で使えます。例として、部署が「営業部」の担当者だけを「田中, 鈴木, 高橋」のように出力する場合は =ARRAYTOTEXT(FILTER(B2:B10, A2:A10="営業部")) と書けます。議事録や週次レポートへの貼り付けが効率化しますよ。
Q. 厳格形式(書式=1)はどんな場面で使いますか?
出力テキストをそのまま別の数式やプログラムに渡したいとき、文字列と数値を型ごとに区別したいときに便利です。たとえばVBAのInputBoxにデータを貼り付けるときや、Power Queryのカスタム列で使いやすい形式が欲しいときに活用できます。
まとめ
ExcelのARRAYTOTEXT関数は、配列やセル範囲のデータをまとめて1つのテキストに変換できる関数です。
ポイントをおさらいしておきましょう。
- 書式=0(簡潔形式): カンマ区切りでシンプルに出力。報告書やメールへの貼り付けに便利
- 書式=1(厳格形式): 中括弧+引用符付きで出力。データの受け渡しに向いている
- VALUETOTEXT関数との違い: ARRAYTOTEXTは複数セル、VALUETOTEXTは単一セルが対象
- 区切り文字を変えたいとき: TEXTJOIN関数がおすすめ
- FILTERやSORT関数と組み合わせると: 条件絞り込み・並べ替え後のデータをそのまま1文字列に変換できる
- Googleスプレッドシートでは使えない:
JOIN関数またはTEXTJOIN関数が代替になる
配列データを文字列に変換する場面で、ぜひ活用してみてください。