よぼ爺の留め書き★Excel、VBA★

ExcelやVBA中心に仕事に役立ちそうな技を忘れないようにメモしていきます

◆Excel 日付や時間の計算に関数を使用しない方法◆

f:id:yobog:20160321162410j:plain

Excelには日付や時間の計算に便利な関数がありますが、単純な加減算は関数を使わなくとも計算ができます。

Excelの日付型

Excelの日付型の仕組みを理解すれば、関数を使用しなくても日付や時間の加算/減算ができるようになります。

 まずはセルに適当な日時を入力して、表示形式を「数値」に変更してみましょう

 2016/3/21 13:24 → 42450.5583333333
すると大きな数値が出てきたと思います。これをシリアル値と言います。

整数の「42450」が日付を表し、小数の 「.55833333」が時間を表しています。

 

◆日付

 1900/1/0が基準となっており、数値の1は1日を表します。先ほどの整数部の42450は1900/1/0から42450日が経過しているという意味です。

ということは、日にちの加減算は単純に日数を整数で使えばよいのです。

例えば 「今日の2日前」は「=Now() - 2」と書くだけです。

注意点ですが、WindowsExcelのシリアル値は1900/1/0が基準になっているので1900/1/1より前のシリアル値は存在しません(マイナス値はエラー)。ですから歴史上の人物の現在の年齢なんていう計算をシリアル値で行うことはできないということです。歴史など古い年代の日付を扱う場合は気を付けてください。

◆時間

時間の考え方は、0 ~ 0.99999999 の範囲にある値で、0:00:00 (午前 0 時) から 23:59:59 (午後 11 時 59 分 59 秒) までの時刻を表しています。

小数部の時間は見ただけではわかりませんが、時間の加減算は簡単に行えます。分数で表わせば良いのです。

 例えば今の時間に2時間40分32秒を加えたい場合は次のように書きます。

=Now() + 2/24 + 40/1440 + 32/86400
24は1日の時間
1440は1日の分数(=24時間×60分)
86400は1日の秒数(=1440分×60秒)

別のセル(例えば$B$1)に2:40:32と入れておいて、=Now() + $B$1という方法もありますが、この方法を覚えておくと余分なセルを使わずに、また日替わりや月替わり、年替わりを意識することなく、日や時間の加減算が行えるようになります。

 適用イメージ

Excelの日付や時刻はできるだけ日付型で扱うことをお勧めします。

ユーザーに日付や時間を入力させるために年・月・日 時・分を別々のセルにすることもありますが、入力後は年月日時分をまとめて日付型に変換しておくようにしておけば、計算や処理するときに非常に扱いやすくなります。

例)入力された日時に+4時間する処理

f:id:yobog:20160321145931p:plain

まとめ方はDate関数とTime関数を使用します。

=DATE(年,月,日) + TIME(時,分,秒)