たまにあります。こんな感じの出納帳。
紙のものをパソコンで清書してはいけない
「出納帳は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
NextEnd 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つずつ身につけていきたいと思います。