【徹底比較】スプレッドシート文字列結合の最適解!JOIN / CONCATENATEなど4関数を使い分け

JOIN・CONCAT・CONCATENATE・TEXTJOIN関数 スプレッドシート Googleスプレッドシート
記事内に広告が含まれています。
スポンサーリンク

「『姓』と『名』の間にスペースを入れて1つのセルにまとめたい」「バラバラの住所をスマートに一本化したい」

データのインポートやリスト作成の際、こうしたセルの結合を手作業で行うのは、時間がかかるだけでなくミスの原因にもなります。

Googleスプレッドシートには、文字列を結合する関数がいくつか用意されていますが、「どれを使っても同じ」ではありません。途中に空欄があったときにエラーや余計なハイフンが出てしまう関数もあれば、それを賢くスルーしてくれる神関数もあります。この記事では、実務で役立つ4つの結合関数の違いを徹底比較し、シーンに合わせた最適な選び方を分かりやすく解説します!

スポンサーリンク

JOIN関数

構文

=JOIN(区切り文字, 値または配列1, [値または配列2, …])

指定した区切り文字を使用して、1 つ以上の 1 次元配列の要素を結合します。

出典:Google ドキュメント エディタ ヘルプ JOIN

すでに1度ご紹介させて頂いておりますが、改めて「JOIN関数」についてご紹介させて頂きます。

実際の使い方

スプレッドシート JOIN関数の使い方

JOIN関数の構文をここでの例から分かりやすく書くと、「=JOIN(区切り文字,セル1,セル2)」となります。

「F2」には、「=JOIN(,B2,C2,D2)」という数式が入力されています。「区切り文字」の部分は、何も入力せずに「,」だけを入力しています。G欄の結果は、「東京都中央区佃」と各文字がそのまま結合されています。

「F3」には、「=JOIN(“”,B3:D3)」という数式が入力されています。「区切り文字」の部分には、「””」とダブルクオーテーションのみを入力しています。G欄の結果は、先程と同じように、各文字がそのまま結合されています。なお引数の部分は「,」ではなく「B3:D3」と範囲を選択しています。

「F4」には、「=JOIN(” “,B4,C4,D4)」という数式が入力されています。「区切り文字」の部分には、「” “」とダブルクオーテーションの間に半角スペースを入力しています。G欄の結果は、「神奈川県 横浜市中区 石川町」と都道府県と市区町村、町名の間にそれぞれ半角スペースが入力されています。

「F5」には、「=JOIN(“-“,B5:D5)」という数式が入力されています。「区切り文字」の部分には、「”-“」とダブルクオーテーションの間にハイフンを入力しています。G欄の結果は、「東京都-中央区-銀座」と各文字の間にハイフンが入力されています。

「F6」には、「=JOIN(“-“,B6:D6)」という数式が入力されています。「F5」と同じ数式ですが、結果が違います。G欄には、「東京都-港区-」と「港区」の後にもハイフンが入力されています。これは「町名」部分が空白になっているためです。

このような単純な表であれば、「F6」のみ、数式を変更すれば問題は解消されますが、もう少し大きな表で、コピーアンドペーストして数式を使用する際は注意が必要です。表に空白がある場合は、他の関数を利用したほうが良いかもしれません。

JOIN関数の最大の強みは、「最初の引数に区切り文字を1回書くだけで、指定した範囲(B3:D3)をすべてその文字で繋いでくれる」点です。CONCATENATEのように1セルずつカンマで区切る必要がないため、横に長いデータを特定の記号(カンマやスラッシュなど)で繋ぎたいときに最適です。

スポンサーリンク

CONCAT関数

構文

=CONCAT(値1, 値2)

2 つの値の連結を返します。& 演算子と同じです。

出典:Google ドキュメント エディタ ヘルプ CONCAT

説明文にある通り、2つの値を連結します。3つ以上の場合は使用出来ませんので注意してください。

実際の使い方

CONCAT関数の使い方

「F2」には正しい数式「=CONCAT(B2,C2)」を入力しているので、結果は「東京都中央区」と表示されています。

「F3」では、セルを3つ選択していますので、「#N/A」が表示されています。

「F4」では、範囲選択をしていますが、こちらも「#N/A」エラーとなっています。

「F5」では、「&演算子」を使っていますので、3つのセルを選択しても正しい結果が表示されています。

「F6」のように空白があり、結合する値が2つであっても、セルを3つ選択しているので、「#N/A」エラーが表示されています。

使い方がかなり限定的になっていますので、あまり使用することはないと思います。

実は、関数を使わなくても 「=B2&C2&D2」と書くだけで結合できるこの方法は、実務で最も手軽に使われています。関数を使うまでもない簡単な結合は『』を使うのが良いでしょう。

CONCATENATE関数

構文

=CONCATENATE(文字列1, [文字列2, …])

文字列を別の文字列に結合します。

出典:Google ドキュメント エディタ ヘルプ CONCATENATE

複数のセルを結合出来るとても便利な関数です。文字列の結合では「CONCATENATE関数」を覚えておけば、ほとんどの場面で困ることはないでしょう。

実際の使い方

CONCATENATE関数の使い方

「F2」には「=CONCATENATE(B2,C2,D2)」と複数のセルを「,」で繋いて入力しています。結果は「東京都中央区佃」と正しく結合されています。

「F3」では、「=CONCATENATE(B3:D3)」と範囲選択をしています。結果は「東京都中央区月島」と正しく結合されています。

「F4」では、「=CONCATENATE(B4,” “,C4,” “,D4)」と「” “」半角スペースを各セルの間に入力しています。結果は、「神奈川県 横浜市中区 石川町」と半角スペースもきちんと追加されています。

「F5」では、「=CONCATENATE(B5,”-“,C5,”-“,D5)」と「”-“」を入力しています。結果は、「東京都-中央区-銀座」とハイフンがきちんと追加されています。

「F6」では、「=CONCATENATE(B6:D6)」と範囲選択していますが、途中に空白があっても、結果にエラーが表示されることはありません。

「F7」では、「=CONCATENATE(B6:D7)」と複数行に渡って範囲を選択しています。結果は、「東京都港区東京都港区西麻布」とこの場合も正しく結合されています。

なお、複数行に渡って範囲を選択する場合は、横方向に結合されますので注意してください。

一部の記事等では、「CONCATENATE関数」は区切り文字を挿入することが出来ないと解説されていることがありますが、実際には区切り文字を挿入することが可能です。

TEXTJOIN関数

構文

=TEXTJOIN(区切り文字, 空のセルを無視, テキスト1, [テキスト2, …])

複数の文字列や配列からのテキストを結合し、結合する各テキストの間に指定された区切り文字を挿入します。

出典:Google ドキュメント エディタ ヘルプ TEXTJOIN

「JOIN関数」の上位変換版のような関数です。「 ブール値」を指定することで、空白のセルを無視することが出来ます。

実際の使い方

TEXJOIN関数の使い方

「F2」には「=TEXTJOIN(B2,C2,D2)」と複数のセルを「,」で繋いて入力しています。結果は「#VALUE!」と表示されています。これは、「 ブール値」を指定していないためにエラー表示となっています。

「F3」では、「=TEXTJOIN(,TRUE,B3,C3,D3)」と「ブール値」を指定しています。結果は「東京都中央区月島」と正しく結合されています。なお数式の最初の区切り文字の部分には「,」のみを指定しています。「,」を指定しないとエラーとなります。

「F4」では、「=TEXTJOIN(“”,TRUE,B4,C4,D4)」と「””」ダブルクオーテーションで区切り文字なしと指定しています。結果は、「神奈川県横浜市中区石川町」と返されます。

「F5」では、「=TEXTJOIN(” “,TRUE,B5,C5,D5)」と「” “」半角スペースを入力しています。結果は、「東京都 中央区 銀座」と半角スペースがきちんと追加されています。

「F6」では、「=TEXTJOIN(“-“,TRUE,B6,C6,D6)」としています。途中に空白があっても、「ブール値」を「TRUE」にしているため、空白を無視してくれています。そのため、結果は、「東京都-港区」と「港区」の後にハイフンが表示されていません。

「F7」では、「=TEXTJOIN(“-“,FALSE,B7,C7,D7)」と「ブール値」を「FALSE」に指定しています。そのため空白を無視しないことになり、結果は、「東京都-港区-」と「港区」の後にハイフンが追加されています。

TEXTJOIN関数も複数行に渡って範囲を指定することも出来ます。

ブール値(TRUE/FALSE)を書くのが少し面倒なのですが、実はこの関数の TRUE(空のセルを無視する) 機能こそが、住所録や型番リストの整理における「救世主」です。 例えば、マンション名(D列)が空欄のとき、JOIN関数だと「東京都港区-」と最後にハイフンが残ってしまいますが、TEXTJOINなら綺麗に「東京都港区」で止めてくれます。実務のトラブルを解決する「一番優秀な関数」の一つです。

また時短ワザとして、 「TRUE」や「FALSE」という英単語を入力するのが面倒な場合、スプレッドシートでは TRUE の代わりに 1FALSE の代わりに 0と数字を入れても全く同じように動きます。

マスターが教える「文字列結合」の落とし穴

  • 結合したあとの「数値」の扱いに注意: 数字が入ったセル同士を結合すると(例:10 と 20 を結合して 1020)、スプレッドシートはそれを『数値』ではなく『文字列』として認識します。そのため、結合した後のセルを足し算(SUM)しようとしても計算対象外になってしまうので注意しましょう。
  • 改行しながら結合したいときは?: セルの内容を、セル内で改行しながら1つにまとめたい時は、CONCATENATE関数の中で CHAR(10) を挟みます。 例:=CONCATENATE(B2, CHAR(10), C2) これを使うと、住所を封筒の宛名のように縦に並べて結合できるので非常に便利です!
  • SQLとの違いについて: データベース言語(SQL)ではCONCAT関数が主流ですが、スプレッドシートにおいては機能が制限されています。ツールごとの『得意分野』を知っておくのも、一歩進んだスキルアップになります。

スポンサーリンク

まとめ

お疲れ様でした!文字やセルを結合する4つの関数、それぞれの違いを掴んでいただけたでしょうか?

たくさんあって迷ってしまうという方は、以下の「選び方の目安」を参考にしてみてください。

  • 2〜3個のセルをサクッと繋ぎたい時: 関数すら使わない (アンパサンド)
  • 途中に空欄がなく、特定の記号(ハイフンなど)で一気に繋ぎたい時: JOIN関数
  • セルを1つずつ選びながら、文字やスペースを自由に挟みたい時: CONCATENATE関数
  • 途中に空欄(空白セル)があり、余計な区切り文字を出したくない時: TEXTJOIN関数(第2引数は「1」でOK!)

データの形や「空欄があるかどうか」によってこれらを使い分けられるようになると、名簿の整理や資料作成のスピードが劇的にアップします。ぜひご自身のシートで、一番しっくりくる方法を試してみてくださいね!

今回も最後までお読みいただき、ありがとうございました。

コメント