らくらくIT活用術

PC活用講座 - Excel

「Excelの便利機能活用術」
セルを結合したら、表示崩れが起こった?対処はどうすれば・・・

ITライター 立山秀利

Excelで複数のセルの値を統合したい場合、&演算子で各セルを結合するのが定番だ。その際、日付のセルを結合しようとすると、結合した整数になってしまい、元のセルと同じ形式にならないことがよく起こる。今回はその解決方法を紹介する。

セルを結合したら日付がおかしくなった!

例えば、予約票をExcelで作成したいとする。予約日付はD8セルに入力。そして、C12セルには「ご予約の変更・取り消しは<予約日付の3日前> 17:00まで承ります。」という一文を表示したいとする。

図

図1

この一文の前半部「ご予約の変更・取り消しは」は欄外のC15セル、後半部「 17:00まで承ります。」はC16セルにあらかじめ用意しておくとする。

C12セルは前半部のC15セルと、予約日付の3日前の日付と、後半部のC16セルを&演算子で連結すれば、目的の一文を組み立てられる。予約日付の3日前の日付は、予約日付であるD8セルから3を引けば算出できる。よって、以下の数式をC12セルに入力すればよいはずだ。
-----------------------
=C15&D8-3&C16
-----------------------

しかし、結果は図2の通り、「ご予約の変更・取り消しは42947 17:00まで承ります。」となってしまう。D8セルは「2017年8月3日(木)」という日付なのに、C12セルでは日付の部分が42947という数値に変わってしまった。

図

図2

この原因は、セルを連結すると表示形式の設定が適用されないことにある。Excelの日付は内部的には整数(シリアル値)で管理されている。予約日付のD8セルの日付は内部的には整数であり、セルの表示形式を「yyyy"年"m"月"d"日("aaa")"」と設定することで、「2017年8月3日(木)」の形式で表示している。

図

図3

実際にD8セルの表示形式を「標準」に変更すると、データ自体は整数の42950であることがわかる。

C12セルの数式内の「D8-3」の部分は「42950-3」と計算され、表示形式が適用されないままC15セルおよびC16と連結されたため、図2のような結果になったのだ。

TEXT関数で表示形式を整えてから連結しよう

このように&演算子でセルを連結すると、設定してある表示形式が適用されず、“生”のデータが連結されてしまう。このような問題を解決してくれるのがTEXT関数だ。指定したデータを指定した表示形式の文字列に変換する関数である。
-----------------------
TEXT(値, 表示形式)
-----------------------

引数「表示形式」には、「書式記号」を用いて、目的の表示形式を表す文字列を指定する。書式記号はさまざまな種類があるが、今回は以下を使う。
-----------------------
・西暦年4桁 yyyy
・月 m
・日 d
・曜日1文字 aaa
-----------------------

これらの書式記号と、「年」など固定の文字列を組み合わせ、「2017年8月3日(木)」のような表示形式にするには、以下のように記述すればよい。固定の文字列はそのまま記述する。
----------------------
yyyy年m月d日(aaa)
----------------------

上記を引数「表示形式」に指定する。文字列として指定するので、全体を「"」で囲む。なお、セルの表示形式のように、「年」など固定の文字列の前後に「"」は不要なので、誤って記述してしまわないよう注意してほしい。

引数「値」には、予約日付のD8セルの3日前ということで、「D8-3」を指定する。以上を踏まえると、TEXT関数の2つの引数は以下のように指定すればよいとわかる。
----------------------
TEXT(D8-3,"yyyy年m月d日(aaa)")
----------------------

後は上記TEXT関数の数式を、前にC15セル、後ろにC16セルを連結するよう、C12セルの数式を修正すればよい。
----------------------
=C15&TEXT(D8-3,"yyyy年m月d日(aaa)")&C16
----------------------

これでC12には、「ご予約の変更・取り消しは2017年7月31日(月) 17:00まで承ります。」と、予約日付の3日前の日付が目的の形式で表示できるようになった。

図

図4

セルを連結する際は日付以外に、時刻や通貨でも同様に表示形式が無視される問題が起きるので、TEXT関数を利用して目的の表示形式に設定しよう。

その他の【Excel】を見る

PC活用講座 一覧へ

立山秀利(たてやま・ひでとし)

カーナビのソフトウェア開発、Webプロデュース業務を経て、現在は、システムやネットワーク、Microsoft Officeを中心に執筆中。 主な著書に『Excel VBAのプログラミングのツボとコツがゼッタイにわかる本』などがある。

(監修:日経BPコンサルティング)