[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『残業時間』(なな)
以下のような表を作成しています。残業時間の出し方に苦労してます。
始業時間 終業時間 残業時間
X 8:00 17:30 0:30
Y 8:00 17:45 0:30
Z 8:00 14:00 0:00
労働時間は休憩時間込みで9時間(始業時間、就業時間は関係なく、早出や遅刻は無し)
残業時間は30分単位で未満については切り捨て
Zさんのように労働時間9時間未満の人は残業時間に0:00と表示
IFやFLOORをつかって
IF(C2-B2<"9:00","0",FLOOR(C2-B2-"9:00","0:30""))
と入力したのですが、何か違うみたいです。
何が違うのか、正しい算出方はどうしたらよいか教えてください。
=TEXT(IF(INT((C2-B2)*1440)<INT(("9:00")*1440),"0",FLOOR(INT((C2-B2)*1440)-INT("9:00"*1440),INT("0:30"*1440))/1440),"[h]:mm")
定数部分を数値化して
=TEXT(IF(INT((C2-B2)*1440)<540,"0",FLOOR(INT((C2-B2)*1440)-540,30)/1440),"[h]:mm")
C2-B2<"9:00"の部分は数値と文字列の比較になるので、必ずFALSEになります。 比較の両辺ともが数値である必要があります。 C2-B2の部分は誤差が出る可能性があるため、1440倍してINT関数で整数部分に丸め、 誤差を吸収します。式の計算内容としては分単位の計算になります。 最後にTEXT関数で時間の文字列に修正表示していますので、 表示形式で時間表示設定の場合はTEXT関数を省略できます。 (KAMIYA)
ただ、関数初心者なので上記の説明が半分ほどしか理解できません。
もっと、勉強します。
テストしてたらアラが見つかりました。修正します。 =TEXT(IF(ROUND((C2-B2)*1440,0)<540,"0",FLOOR(ROUND((C2-B2)*1440,0)-540,30)/1440),"[h]:mm")
((KAMIYA)
こんなに丁寧に説明が・・感謝・感謝です。
残業時間を0:30表記ではなく、0:50表記にする場合は計算方法が
違うのでしょうか??
また、0:30表記のとき合計時間を出すにはSUM関数ではダメですか?
どうも0:00になってしまいます。
>残業時間を0:30表記ではなく、0:50表記にする場合は計算方法が 0:50表記というのは? 50分単位の時間調整をするということでしょうか? いや、どうもこれ現実的ではないですね。 1:30(時間:分)を1.50(時間単位)にするという意味でしょうね。 前の説明のようにシリアル値は「1」を24時間とみなす数値ですから、 単純に24倍すれば時間単位の数値になる(はず)です。 ="1:30"*24(=1.5) >また、0:30表記のとき合計時間を出すにはSUM関数ではダメですか? =TEXT(IF(ROUND((C2-B2)*1440,0)<540,"0",FLOOR(ROUND((C2-B2)*1440,0)-540,30)/1440),"[h]:mm") この関数は最終的に「文字列」を表現します。 また、SUM関数は「文字列」を無視して集計します。 結果的にSUM関数では「0」にしかなりません。
ありがとうございました。(ちょっと、遅くなっちゃった)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.