日付の見た目を関数で加工したい。
文字列結合したいのに数字になってしまう。
どうしたらいいか。
「日付」として表示させればよろしいかと。
Excelでの日付の扱い
Excelでは、日付もシリアル値(数字)です。日付として表示させているだけなのです。
数式に単純に組み入れると、元の姿(数字)になってしまいますので、何らかの対処が必要です。
今回は、よくよく聞いてみると、日付に曜日を付けたいというお話でしたので、表示形式のご紹介で解決でした。
日付を数式内で扱う方法2つ
Excelの日付は、基準日付(後述)からの差を数値として設定し、日付の表示にして表現しているのです。
2段階です。
たとえば、「2016年8月15日」は「42597」です。
(↑ 当ブログのスタート日です ↑)
「42597」に対して、年月日で表示するようにセルの書式設定を入れているので、日付表示になっています。
数式で対象セルを参照すると、「42597」の方が取得され、そのまま反映されてしまいます。
日付表示はあくまでも、対象セルに設定されているものだからです。
計算させる必要がある時には、シリアル値のほうが取り回しが楽なのです。Excelは表計算ソフトですから!
とはいえ、日付形式で表示させたいなら、表示形式を明示するか、元の値を調整するかのどちらかでしょう。
参照先のセル(A1)には「2016年8月15日」が表示されていて、「2016年8月15日~今日」という結果を得たい場合を例にします。
例なので対象セルは1つですが、実践の場では、セル範囲に対応するかたちだと思います。
TEXT関数を利用する
日付形式で表示するように明示する方法です。
参照先の値が変動しても対処できる、汎用的な対処法です。
設定内容は多いですが、1回やってしまえばよいものですので。
設定する数式は以下です。
=TEXT(A1,"yyyy年m月d日")&"~今日"
TEXT関数を使います。
第1引数に値、第2引数に表示形式を指定します。
値は、日付のシリアル値です。今回はA1を参照すると「42597」が入る寸法です。
表示形式は、セルの書式設定で設定するやつです。ダブルクォーテーションをお忘れなく。「mm」とか「dd」とかにすると、ゼロ埋め2桁になります。
元を文字列にする
そもそも日付のシリアル値として置いておかない方法です。
参照先の値が変わらない場合にのみ、利用できます。
手間は少ないと思います。
下ごしらえで、以下をやっておきます。
- 参照先セル(A1)をコピーしてメモ帳に貼り付け
- 参照先セルの書式設定を文字列に
- メモ帳にコピーしておいた値を貼り付け
設定する数式は、単純に以下です。
=A1&"~今日"
基準日付は詳細設定で確認できる
デフォルトの基準日付は、1900年1月1日です。
Excelの日付の値は、その日から何日経過しているかです。
ちなみに、厳密には、基準日付は2種類あります。
設定状況はオプションの詳細設定で確認できます。
設定内容や確認方法に関して詳しくは別投稿にて。
基準日付が異なると、ブック間のコピペで日付がズレます。
詳しくは別投稿にて。
ブック内で扱っている日付がズレる場合には、関数の書き方が誤っている可能性のほうが大きいでしょう。
日付に曜日を付けたいなら
今回の要件をじっくり聞いてみると、目的が見えてきました。
ひょっとして、曜日を表示させたいのでしょうか。
うん。
日付に曜日も付記したいということですね。
たとえば、2022年8月15日(月)みたいなことです。
セルの書式設定で、見た目を指定できます。
TEXT関数の第2引数の指定でも効きます。
yyyy年m月d日(aaa)
「m」を「mm」とすると、ゼロ埋めになります。
日付も同じです。
曜日は「aaa」です。
3文字だと、漢字1文字の省略形。(「月」とか)
4文字だと、漢字3文字の完全形。(「月曜日」とか)
ご意見やご感想などお聞かせください! コメント機能です。