Excelで文字列を結合するときは「&」の演算子を使用するのが一般的だ。そのほか、CONCATENATEやCONCAT、TEXTJOINといった関数を使って文字列を結合することもできる。いずれの方法にせよ、文字列を結合する操作そのものは難しいものではない。そこで今回は「「横長の表」をA4サイズに収める場合を例に効果的な活用方法を紹介していこう。

PDFは印刷レイアウトに準じて作成される

今回は、文字列データを結合する関数について紹介していく。ただし、単に文字列を結合(連結)させるだけでは面白みに欠けるので、少しユニークな使い方として「横長の表」をスリム化してA4サイズに収めるテクニックを紹介していこう。

  • 文字列を結合(連結)する関数CONCAT、TEXTJOIN

まずは、例として用いるデータ表を紹介する。今回は、氏名(フリガナ)、郵便番号、住所、電話番号、メールアドレス、生年月日をまとめた表を使って詳しい操作手順を解説していこう。

  • 会員情報をまとめた表

この表の「印刷プレビュー」を確認すると、以下の図のようなイメージになる。1つの行が何枚にも改ページされた、非常に見づらい印刷結果になってしまう。こういった状況は「横長の表」を作成したときに必ず発生する問題といえる。これだけ横に長いと「改ページプレビュー」で印刷範囲を調整しても“無駄なあがき”になってしまうだろう。

  • 印刷プレビューの確認

最近は紙に印刷する機会が少なくなったため、「別にA4サイズに収まらなくても構わないのでは?」と考える方もいるだろう。確かにその通りである。しかし、「この表をもとにPDFを作成する」となると話は別だ。

皆さんもご存じのように、PDFは印刷イメージをそのまま電子化したファイルになる。よって、上記の表をPDF化すると、印刷プレビューと同じレイアウトのPDFが作成されてしまう。これでは使い物にならない・・・。用紙サイズを大きくして解決する方法もあるが、画面の小さいスマートフォンでPDFが閲覧される場合もあることを考えると、ベストな解決策とはいえない。

なお、今回の例のように「個人の名簿」をPDF化するケースは滅多にないと思われるが、「店舗の一覧」や「商品スペックの一覧」などにもそのまま応用できるテクニックなので、対策方法の一例として参考にして頂ければ幸いだ。

文字列を結合する関数CONCAT

まずは、単純に文字を結合して「セルの幅」を小さくする方法を試してみよう。文字列データを結合(連結)するときは「&」の演算子を使用する。例えば、「都道府県」と「住所1」を結合し、その後に「半角スペース」を挿入して「住所2」を結合するときは、以下のように数式を記述すればよい。

  • 「&」を使った文字列の結合

同様の処理を関数で行うことも可能だ。Excelには、文字列を結合する関数として「CONCATENATE」と「CONCAT」が用意されている。いずれも引数に「文字列データ」(セル参照)をカンマ区切りで列記していくだけで使用できる。

◆関数CONCATENATEの書式
 =CONCATENATE(文字列1, 文字列2, 文字列3, ・・・)

◆関数CONCATの書式
 =CONCAT(文字列1, 文字列2, 文字列3, ・・・)

CONCATの場合は、引数に「セル範囲」を指定することも可能となっている。どちらも似たような機能を持つ関数なので、使い勝手のよいCONCATの方を覚えておくとよいだろう。

  • 関数CONCATを使った文字列の結合

これらの方法で「住所」のデータを結合すると、以下の図のようになる。あとは、この関数(数式)をオートフィルでコピーするだけだ。

  • 住所を結合した結果

不要になったD~F列を非表示にして「印刷プレビュー」を確認すると、以下の図のような結果が得られた。

  • 住所を結合した表の印刷プレビュー

少しはマシになったかもしれないが、「横幅が足りない・・・」という問題を解決するには至っていない。このように、単に文字列を結合するだけでは「表のスリム化」を実現できないケースが多いといえる。

文字列を改行して結合する

では、どうすればよいのか? そのひとつの解決策となるのが「セル内の改行」を活用する方法だ。データ分析において「セル内の改行」はスムーズな処理を妨げる邪魔者でしかないが、「表をスリム化する」という観点では効果的な手法となる。

途中に「セル内の改行」を挿入したいときは、その部分にCHAR(10)を記述すればよい。ここでは関数CONCATを使って「郵便番号」を含めた「住所」を結合してみよう。

まずは“〒”のマークを文字列データとして指定する。続いて「郵便番号」のセル参照(C2)を指定し、CHAR(10)で「セル内の改行」を指定する。以降も「都道府県」(D2)、「住所1」(E2)、「セル内の改行」、「住所2」(F2)という順番で引数を指定していけばよい。

  • CHAR(10)で改行を挿入した文字列の結合

ただし、これだけでは思い通りの配置にはならない。データを改行して表示するには「折り返して全体を表示する」をONにしておく必要がある。すると、以下の図のように「住所」を改行して配置することが可能となる。

  • 改行を含めて結合した住所

前回の連載で「文字列データは分割した状態のまま保管しておくのが基本」と述べたが、上図のように「セル内の改行」で文字の配置を調整できることも分割保管のメリットといえる。すでに文字列データ(住所)が結合されている状態では、こういった作業を手軽に行えなくなってしまう。

関数TEXTJOINを使った文字列の結合

「セル内の改行」を示すCHAR(10)を何回も記述するのが面倒な場合は、関数TEXTJOINを使って文字列を結合する方法もある。

◆関数TEXTJOINの書式
 =TEXTJOIN(区切り記号, TRUE/FLASE, 文字列1, 文字列2, ・・・)

第1引数には、文字列を結合する際に挿入する「区切り記号」を指定する。続いて、第2引数にTRUEまたはFLASEを指定する。これは「空文字を結合するときにどう処理するか?」を指示するもので、それぞれ以下のような指定内容になる。

 ・TRUE ・・・・ 空文字の場合は「区切り記号」を挿入しない
 ・FLASE ・・・・ 空文字の場合でも「区切り記号」を挿入する

先ほどと同じ例で具体的な記述を紹介しておこう。第1引数にはCHAR(10)を指定し、区切り記号に「セル内の改行」を指定する。第2引数にはTRUEを指定する。続いて、第3引数以降に各行の内容を指定していく。

  • 関数TEXTJOINを使用する場合

今回の例では、1行目に"〒"と「郵便番号」を結合した文字列、2行目に「都道府県」と「住所1」を結合した文字列、3行目に「住所2」の文字列を指定した。

「折り返して全体を表示する」をONにすると、以下の図のような結果が得られる。このように関数TEXTJOINで文字列を結合することも可能だ。

  • 改行を含めて結合した住所

あとはオートフィルで関数TEXTJOINをコピーするだけ。これで全データの「住所」を以下の図のように配置できる。

  • 関数TEXTJOINをオートフィルでコピー

「郵便番号を含む住所」を1列に集約できたら、もうC~F列は必要ないので削除しておこう。第40回の連載で紹介した「値の貼り付け」を使って「関数TEXTJOIN」を「通常の文字列データ」に上書きし、その後、C~F列を削除すると以下の図のようになる。

  • 「値の貼り付け」を使って不要になった列を削除

文字列を結合して表全体をA4サイズに収める

同様の手順で列を集約していくと「表のスリム化」を実現できる。たとえば「氏名」と「氏名カナ」を1列に集約すると、以下の図のようになる。

  • 「氏名」と「氏名カナ」を結合

同様に「電話番号」と「メールアドレス」を1列に集約すると、以下の図のようになる。

  • 「電話番号」と「メールアドレス」を結合

このように作業を進めていくと、データを1つも欠落させることなく、表全体をスリム化することが可能となる。あとは見た目を整えていくだけだ。

初期フォントとなる「游ゴシック」は行間が広めに設計されているため、セル内の行間も広めになる。これを狭くしたい場合は、「МS Pゴシック」や「BIZ UDゴシック」、もしくは「ヒラギノ系」(※)のフォントを指定するとよい。さらに、文字サイズ、行の高さなどを調整していく。

(※)「HGPゴシックM」など、名称が「HG」で始まるフォント

  • フォント、文字サイズ、行の高さを調整した表

ある程度、調整できたら「印刷プレビュー」を確認してみよう。少しだけ用紙からはみ出してしまう場合は、左右の余白を小さくする、「すべての列を1ページに印刷」を指定する、などの設定変更を試してみるとよい。

  • スリム化した表の印刷プレビュー

表全体の横幅がA4サイズに収まることを確認できたらPDFを作成する。以上が、今回の連載で紹介するテクニックの趣旨となる。

  • PDFを作成した様子

今回紹介した例のように、文字列を結合する関数は「表全体のレイアウト」をスリム化するときにも活用できる。データ表を印刷する場合だけでなく、PDFを作成する場合にも使えるテクニックとして覚えておくと役に立つだろう。