調査したところ、アプリケーション毎にシリアル値の設定方法が異なっているようだ。
◆対処方法
A1のセルに比較したい値の数値(日付)があり、その値を特定の時間帯と比較して判別したかった。計算式は以下:
=IF(TEXT(A1,"m/d hh:mm")>="1/1 00:00","24時間を超える","24時間を超えていない"))
この状態だとMicro soft ExcelとOpenOffice Calcでは計算が異なってしまう。
なぜなら、それぞれのアプリケーションでシリアル値の計算方法が異なるため、
TEXT関数での出力結果に違いが生じてしまうからだ。
具体的に述べると、Micro soft Excelだと、シリアル値"0"を設定した時に"1/0 00:00"という扱いがなされ、OpenOffice Calcだと、"12/30 00:00"という扱いがなされてしまっていた。
そこでMicro soft ExcelでもOpenOfficeでも動作するよう修正してみた。
B1:=TEXT(1,"m/d hh/mm")
=IF(TEXT(A1,"m/d hh:mm")>=B1,"24時間を超える","24時間を超えていない"))
修正版では特定の時間帯の計算をシリアル値で行い、その値を元に比較対象の時間と比較を行っている。
これでMicro soft ExcelでもOpenOffice Calcでもうまく動作した。
※ちなみに関数の引数の区切り方は、Micro soft Excelだと「,」、OpenOffice Calcだと「;」です
結局の話、直打ちで計算するなよ……ということ。
0 件のコメント:
コメントを投稿