つい凝り性な性格が出た

何でも無いタイムシートなんだが、前々から時間入力に「:」コロンを入力すると言うのが嫌いで基本的に、コロン無しで時刻を入力して計算している。

これが、大体15分単位とか30分単位なら特に気にする事も無いのだが、入力していると1分単位に入力してみたくなってしまい、やって見た。

まず、大前提はマクロを使わないと言うのがあって、マクロを使うとメールに添付するにも結構厄介だし、エクセルの拡張子がxslmになってなんか嫌だ。

セキュリティー上マクロでも署名してしまえば良いのだがそれもなんか逃げているみたいでいやなのでここはシート関数で全部やってみたくなったのだ。

で、結局10進数と60進数の差異を調整してMOD関数を使いながらしかも、〇〇時間○○分と言う表示にこだわったので、分部分が結構厄介で1分単位は結構痺れるような長い計算式になってしまった。

それに入力してないところは空白にしておきたいしエラーが表示されるのもいやなので色々と計算式を組み直して、エクセルの数式バーでは見難いのでエディターに貼り付けて括弧の調整をしながらようやく1分単位で思った様な時間計算を出来るシートが完成した。

1時間は100、分はそのまま59まで入力する。

必然的に160と入力すると1時間60分と言う変な表示になるのだが、これは入力側の運用に委ねるしかないのであえてチェックをする必要もないだろうと思っている。

これで、正しい時間表現を入力することで1分単位で計算出来るので結構便利になった。

計算式は取りあえず適当だけどこんな感じ

=IF(F10=””,””,(((E10-D10-RIGHT(E10-D10,2))0.6+RIGHT(E10-D10,2)-G10)-MOD((E10-D10-RIGHT(E10-D10,2))0.6+RIGHT(E10-D10,2)-G10,60))/0.6+MOD((E10-D10-RIGHT(E10-D10,2))*0.6+RIGHT(E10-D10,2)-G10,60))

ちゃんと見直せばもっとスッキリ出来るとは思うのだがまぁ取りあえず一旦休憩

後は、個別に計算するセルを別途用意すれば1つのセルに数式を詰め込む必要は無いのだが取りあえずこんな感じで1つのセルの中だけでやってみた。

その場合、メンテナンスが厄介なので、一時計算用のセルを用意してやった方が効率は良いだろう。

コメント