検索
連載

【Excel】複数のセルの文字列を結合して1つの文字列にするTech TIPS

Excelのワークシートで氏名や住所などが複数のセルに分割されている場合、これらの文字列を1つに結合して、処理を行いたいこともあるだろう。ここでは文字列を結合する複数の方法を説明しつつ、用途やExcelのバージョンに応じて最適な方法を紹介する。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「Tech TIPS」のインデックス

連載目次

対象:Excel 2016/2019/2021/365


複数のセルに分割された文字列を結合する
複数のセルに分割された文字列を結合する
住所録などで、氏名や住所などが複数のセルに分割されている場合がある。データ処理を行う際、こうした分割された文字列を結合したいこともあるだろう。そこで、ここでは文字列を結合する方法を紹介する。なお画面の住所録は、テスト用の住所録を作成するツール「テストデータ・ジェネレータ」を使って作成したものを、サンプル用に改変している。

 「Microsoft Excel(エクセル)」を使って、顧客名簿の管理やアンケートの集計などを行うケースも多いのではないだろうか。その際、Webサイトのフォームで入力してもらったり、外部から入手したりした住所録やアンケートなどのデータをExcelに読み込むと、住所などが複数のセルに分かれていることがある。

 こうしたデータを処理する際、氏名や住所などがそれぞれ1つのセルにまとめてあると、並べ替えなどが行いやすい。また、場合によっては、文字列を結合する際に、姓と名の間に半角のスペースを入れたいということもあるだろう。

 本Tech TIPSでは、このような場合の処理方法を紹介しよう。

[Ctrl]+[E]キーで文字列を一発で結合する

 複数のセルに分かれた住所などを1つのセルにまとめたい場合、[Ctrl]+[E]キーのキーボードショートカットで実行できる「フラッシュフィル」機能を使うのが簡単で手っ取り早い。

 フラッシュフィルとは、サンプルデータと同じ規則性を他の行や列に対しても適用し、値を自動入力する機能だ。そのため、場合によっては正しく値が入力できないこともある。ただ、複数のセルに分かれた文字列を1つのセルに結合するといった、比較的分かりやすい規則の場合は正しく入力されることが多い。

 まず、まとめた住所を入力したいセル範囲から1つのセルを選び、複数のセルをまとめた住所をサンプルとして手動で入力する。次に、サンプルのセルを含むように、まとめた住所を入力したいセル範囲を選択してから、[Ctrl]+[E]キーを押せばよい。サンプル以外のセルに対しても同じ処理が実行され、まとめた住所が入力される。

 また、文字列を結合する際に、住所(番地など)と建物の間に半角のスペースを入れたいといった場合は、サンプルとするセルに住所を手動で入力する際、その間にスペースを入れて、「<番地など><半角スペース><建物>」としておけばよい。

 注意が必要なのは、サンプルとして入力する住所には建物名などが入ったものを使うことだ。建物名が入っていない住所をサンプルに使うと、建物名が含まれない住所が入力されてしまう。サンプルデータは、表の途中でも構わないので、結合するセルが一番多い行にする。

フラッシュフィルで文字列を結合する(1)
フラッシュフィルで文字列を結合する(1)
サンプルとなる複数のセルをまとめた住所を入力する。住所(番地など)と建物の間に半角スペースを入力しておけば、フラッシュフィルで入力される住所も同様に住所と建物の間に半角スペースが入る。
フラッシュフィルで文字列を結合する(2)
フラッシュフィルで文字列を結合する(2)
結合した住所を入力したいセル範囲を選択し、[Ctrl]+[E]キーを押す。
フラッシュフィルで文字列を結合する(3)
フラッシュフィルで文字列を結合する(3)
選択したセル範囲に結合した住所が入力される。

「&」で文字列を結合する

 フラッシュフィルで正しい値が入力できないような場合は、文字列の入った各セルを「&」でつなげる数式を入力するとよい。例えば、「A2」セルと「B2」セルに入っている文字列を結合して、「C2」セルに入力したい場合、「C2]セルに「=A2&B2」と入力する。姓と名をつなげる際、姓と名の間に半角スペースを入力したい場合は、「=A2&" "&B2」というように、間に「&"<半角スペース>"」を挟めばよい。

「&」で文字列を結合する(1)
「&」で文字列を結合する(1)
セル番号を「&」でつなげることで、文字列の結合ができる。スペースなどの区切り記号を入れる場合は、各文字列のセル参照の間に「&"<半角スペース>"」を挟めばよい。
「&」で文字列を結合する(2)
「&」で文字列を結合する(2)
セルの右下部分をドラッグして、オートフィルで他の行に反映する。
「&」で文字列を結合する(3)
「&」で文字列を結合する(3)
姓と名が結合したセルが作成できる。

 ただ、文字列を結合したセルは、数式の状態なので、データ処理に利用する場合は、数式から文字列に変換しておく必要がある。それには、文字列を統合したセルの列(ここでは「C」列)を選択し、[Ctrl]+[C]キーでクリップボードにコピー後、「C1」セルを右クリックして、メニューの「貼り付けのオプション」で[値]を選んで貼り付ける。

数式から文字列に変換する(1)
数式から文字列に変換する(1)
「&」で文字列を結合した列を選択してから[Ctrl]+[C]キーを押してコピーする。
数式から文字列に変換する(2)
数式から文字列に変換する(2)
先頭のセルを右クリックして、メニューの「貼り付けのオプション」で[値]を選んで貼り付ける。
数式から文字列に変換する(3)
数式から文字列に変換する(3)
数式が文字列に変換できる。

 既に列にセルの書式などを設定している場合は、右クリックメニューの[形式を選択して貼り付け]を選択して、表示された[形式を選択して貼り付け]ダイアログで「値と数値の書式」をチェックして、[OK]ボタンをクリックすればよい。これで、セルの書式が維持された状態で、数式を値に変換できる。

新しいExcelならCONCAT関数やTEXTJOIN関数で文字列を結合するのが便利

 姓と名など、文字列を結合するセルの数が少ない場合は、「&」が簡単だ。しかし、都道府県、市区町村、番地、ビル名といったように住所が複数のセルに分割されているような場合、これを「&」で結合するのは少々面倒だ。こうした複数のセルを結合する場合は、CONCAT関数やTEXTJOIN関数を使うとよい。

 ただし、これらの関数はExcel 2019以降またはMicrosoft 365(Office 365)版Excelでのみ利用できるものだ。それより古いExcelについては、この後の「古いExcelにも対応するにはCONCATENATE関数を使って文字列を結合する」へ進んでいただきたい。

セル範囲で指定可能なCONCAT関数

 複数のセル内の文字列を結合したい場合、CONCAT関数なら、各文字列をセル範囲で指定できるので便利だ。CONCAT関数は、指定した文字列を結合して出力するものだが、文字列の代わりにセル番号やセル範囲を指定することも可能だ。

CONCAT(文字列1,[文字列2,文字列3,……])

CONCAT関数の書式

CONCAT関数で複数の文字列を結合する(1)
CONCAT関数で複数の文字列を結合する(1)
CONCAT関数を使うと、セル範囲を指定して文字列を結合できる。数式バーに「=CONCAT(」と入力して、結合したいセル範囲をドラッグで選択し、「)」で閉じる。
CONCAT関数で複数の文字列を結合する(2)
CONCAT関数で複数の文字列を結合する(2)
選択したセル範囲の文字列が順番に結合される。

 後はオートフィルを使って、他の行に反映し、「&」を使って文字列を結合した場合と同様、データ処理に利用する場合は数式から文字列に変換しておくとよい。

 CONCAT関数は、セル範囲で各文字列を指定する場合、結合する文字列間に区切り記号を挿入できない。区切り記号を挿入したい場合は、「=CONCAT(B2," ",C2," ",D2)」といった具合に、セル番号の後に結合する文字列として区切り記号を指定する必要があるので面倒になる点に注意してほしい。

特定の区切り記号を挿入する場合はTEXTJOIN関数が便利

 電話番号が市外局番、市内局番、加入者番号といった具合に別のセルに保存されているような場合、これを1つのセルにまとめる際には、それぞれを「-」の区切り記号でつなげたいのではないだろうか。しかし、前述のCONCAT関数では、「=CONCAT(B2,"-",C2,"-",D2)」といった具合に指定しなければならず面倒だ。

 このように、同じ区切り記号を付けて文字列を結合するのであれば、TEXTJOIN関数を使うと便利だ。

TEXTJOIN(区切り記号, 空のセルの処理, 文字列1,[文字列2,文字列3,……])

TEXTJOIN関数の書式

 「区切り記号」は、文字列を「"」で囲んで指定する。区切り記号に「-」を入れたいのであれば、「"-"」とする。「空のセルの処理」は、「TRUE」ならば空のセル(文字列が入っていないセル)を無視、「FALSE」ならば空の文字列も含めて結合される。そのため、「FALSE」を指定すると、空のセルの部分は区切り記号が連続してしまうので注意してほしい。

 その後の「文字列」部分は、CONCAT関数と同様、セル番号やセル範囲での指定が可能だ。

TEXTJOIN関数で区切り記号を付けて複数の文字列を結合する(1)
TEXTJOIN関数で区切り記号を付けて複数の文字列を結合する(1)
TEXTJOIN関数では、区切り記号を指定することで、文字列の間に区切り記号を入れた結合が行える。ここでは、電話番号を区切り記号「-」で結合する。
TEXTJOIN関数で区切り記号を付けて複数の文字列を結合する(2)
TEXTJOIN関数で区切り記号を付けて複数の文字列を結合する(2)
市外局番、市内局番、加入者番号が「-」で結合された。 後はオートフィルを使って、他の行に反映し、「&」を使って文字列を結合した場合と同様、データ処理に利用する場合は数式から文字列に変換しておくとよい。

 TEXTJOIN関数は、「区切り記号」を「""」とし、「空のセルの処理」を「FALSE」とすれば、CONCAT関数と同様に使える。汎用(はんよう)性が高いので、文字列を結合したい場合は、TEXTJOIN関数を利用しておくとよい。

古いExcelにも対応するにはCONCATENATE関数より「&」の方が分かりやすい!?

 CONCAT関数やTEXTJOIN関数は、Microsoft 365(Office 365)やExcel 2019以降で追加された関数なので、Excel 2016などの古いExcelでは対応していない(CONCAT関数やTEXTJOIN関数を使ったシートをこれらのバージョンのExcelで開くと、関数が入ったセルがエラーになる)。こうした古いExcelで処理を行うのであれば、CONCAT関数の代わりにCONCATENATE関数を利用できる。

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

CONCATENATE関数の書式

 ただし、CONCATENATE関数で文字列を結合する場合、セル範囲での指定ができないため、関数内に文字列やセル番号を並べる必要がある。そのため、「&」で結合するのと使い勝手はあまり変わらない。古いExcelで処理を行う予定があるのであれば、CONCATENATE関数よりも、「&」を利用した方が分かりやすいだろう。

更新履歴

【2025/03/31】フラッシュフィルを使う方法などを追記しました。

【2022/01/31】初版公開。


Copyright© Digital Advantage Corp. All Rights Reserved.