Excelで日付や時刻を扱う

記事
IT・テクノロジー
勤務実績を入力するExcelの改訂を行なった際に時刻を扱う処理で手間取った話です。

[ 内容 ]実績を30分(0.5h)単位で記載していたのを15分単位に仕様変更

既存の仕様では開始時間と終了時間を入れるとそれぞれをINDEX()関数を用いて別表から勤務時間を得るというものでした。

修正案として、その別表を30分単位から15分単位に作り直すというのもあったのですが、本業の合間に片付ける時間的制約とミスを作り込むのが嫌だったので別表は手をつけないことにしました。

考え方としては、15分や45分をいったん00分と30分に置き換えて別表を参照して勤務時間を得た後で15分の端数を補正するというものです。

ここで、時刻を検索値としてVLOOKUP()とINDEX()を多用したわけですが、うまく処理されない箇所が出てきて、調べていくと時刻の参照がうまくできていないようでした。セルの参照そのものは正しい位置を見ています。
後で調べてわかったのですが、データの形式が時刻のままで検索などを行うと上手くいかないケースがあるようで、理由はシリアル値が浮動小数点の値を取るからです。多分、時刻を足し算や引き算しても上手くいかないケースがでてくるのではないでしょうか。そのためにTIME()関数が用意されているのだと思います。

勤務実績表の改訂が上手くいかない中、時刻形式のまま検索や参照すると動作が不安定になりそうだと感じたので、時刻形式を一旦時刻表記の文字列に置き換えてしまいました。もう、参照や検索はぜんぶ文字列形式でやってしまえという対処療法です。^^;
結果、当初の目的は達成できました。

日付や時刻は独特のクセがあり、日付も、「1ヶ月後」を求めるのに、単純に30日加えるのか、基準日の翌月の同じ日にするのかとか、日常文化と関係してくるところがあって手間を取られます。こういう処理を頻繁に行うのであればユーザー定義関数などを作っておくのも手かなと思います。



サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら