Excelの関数は便利ですが、何をしているかは知っておきましょう(DATE関数)

たまにあります。こんな感じの出納帳。

■ ■ 発売中 ■ ■
決算書のつくり方
kindle版 

なぜ社長は決算書に興味がないのか?
Kindle版

紙のものをパソコンで清書してはいけない

「出納帳はExcelで作っています」
といって出納帳のシートをもらうと、こんな出納帳になっていることがあります。
年、月、日を別のセルに入れているというのは、紙(手書き)の出納帳の名残りなのでしょう。

上と同じ場合は「書く」ことを省略して「空欄」に。
あるいは「同じ」を意味する「〃」が入っている場合も。

まず表を作って、そこにデータ(文字)を入れ・・・
Excelが、表作成(ワープロ)ソフトとして使われている、残念な例です。

・パソコンが得意なことはパソコンに

こんな出納帳の場合、日付は日付として1つのセルに入れていただくようにお願いしています。

データでないものをデータに加工する

申告期日の都合などで、こちらで加工することもあります。
「日付データ」に直します。

いろいろやり方はあると思いますが、私はこんなふうにしています。
1,まず、間を詰めます
 まずセルの空白を埋めないと、日付に変えることができません。
 なので、空いているところを埋めます。
 人に聞きながらこんなマクロを作りました。

Sub DateAdd()
Dim rg As Range ‘

For Each rg In Selection
If rg.Value = “” Then
rg.Value = rg.Offset(-1).Value
End If
Next

End Sub

「指定した範囲内で、空白のセルがあったら、1つ上のセルの値を入れる」というものです。

2,DATE関数で日付に
 これで各セルが埋まりましたので、DATE関数で日付に変えます。

DATE関数は、3つのセルの値をくっつけて、日付(シリアル値)に変えてくれる関数です。
=date(b3,c3,d3) とセットすると、2019/1/31 となります。

■ 6/21 Excel活用セミナー(基本編)
■ 7/4 戦略MQ会計セミナー(基本編)

DATE関数は何をしているか?

DATE関数は、3つのセルの内容から、日付を導き出しています。

Excelの場合、日付はシリアル値というもので持っています。
「1月31日」とか「平成31年1月31日」「2019/1/31」というのは、表示の方法(見せ方)に過ぎません。
これらはExcelでは「43496」というデータでしかありません。

もちろん便利な関数ですが、このDATE関数は、Excelの日付の基準値から導かれたシリアル値を返しています。

なので、実際は存在しない日付でも、基準値から何番目というシリアル値を返し、それが「表示」されます。

例えば、実在しない「2019年2月31日」は、DATE関数では「43527」というシリアル値が返されます。
そして、それが「日付」の形で表示されます。

なので、2月末の日付を表示しようと思っても、3月の日付になっています。

もちろん、これは入力の仕方に問題があります。
しかし、関数をセットしてエラー(「N/A」みたいな表示)が出ないと、スルーしてしまう可能性があります。

DATE関数がどんなことをしていて、それを使うときには「月末日に注意」を意識しておく必要があります。

もちろん、DATE関数を使わないでいい、日付形式で入力するのがベストなんですけど。

ーーー

【編集後記】

Excelのマクロを始めとして、プログラムはしっかり身につけたいものです。
体系的に勉強するのも大切だと思いますが、「これはめんどくさい!」が起爆剤になります。
虫食いでも、1つずつ身につけていきたいと思います。