『セル=時間表示 数式バー=日付と時間の組み合わせ』(とも)
会社のソフトから社員の勤怠データをダウンロードして勤怠時間を計算したいと思っています。
始業ー終業ー休憩時間にしたいのですが、
ダウンロードしたデータは作業時間として
A列『日付+始業時間』と
B列『日付+終業時間』となっていますので、
まずは、
A列とB列の間にA列コピーして挿入をB列にして
書式設定にて
もともとのA列は日付表示
挿入したB列は時刻表示
C列は『日付+終業時間』を時刻表示に変換しています。
そこからお昼休憩の1時間を計算したいのですが、
始業時間のB列の12:00前で条件を絞りたかったのですが…それがうまく作動せず
恐らく
セルの標示は見かけ上、時間表示になっていますが数式バーには変わらず日付+時間が表示されている為、時間を絞り出すのに反応しません。
結論としては休憩時間を算出したいのですが何かいい方法があれば教えてください。
< 使用 Excel:unknown、使用 OS:Windows10 >
(匿名) 2025/09/12(金) 13:34:58
A1に日時が入っているとして、=A1-INT(A1)で時間だけにはなると思います。
書式設定を触らないと単なる1未満の数値に見えるはずですけれど。
エクセルでは整数部=日、小数部=時間です。
参考
https://www.isa-school.net/blog/office-excel49/
(ゆたか) 2025/09/12(金) 13:47:33
>結論としては休憩時間を算出したい
1)終業時間と始業時間だけで、どうやって休憩時間を「算出」できるのか質問文から理解ができない。
2)セルの中の値が「日時と読める文字列」なのか「数値(シリアル値)」なのかはっきりしない。
(多分文字列?)
なので、元データの例と、期待する結果を示してみませんか?
(まっつわん) 2025/09/12(金) 13:48:49
まるっきりの想像(妄想)でこんなことなのなと
=終業時刻-始業時刻-IF(TIMEVALUE(TEXT(始業時刻,"hh:mm:ss"))<TIMEVALUE("12:00"),TIMEVALUE("1:00"),0)
もうちょっと短く
=終業時刻-始業時刻-IF(MOD(始業時刻,1)<0.5,TIMEVALUE("1:00"),0)
(´・ω・`) 2025/09/12(金) 14:26:13
コメントありがとうございます。
いえ。
もちろん休憩時間自体は1時間と決まっていますが
休憩を取っているかどうかが日報より算出したくて
例えば
9/12 9:00 10:00 社内打合せ
9/12 10:00 11:30 設計
9/12 11:30 15:00 現場作業
とした場合、現場での作業については取引先への請求が発生するため
実際に手を動かした時間を算出する必要があります。
その為 15:00-11:30=3.5H から昼休憩の1Hを引いて
請求する時間は2.5Hとしないといけない事になります。
ですので、そのE列の休憩時間を算出したいのです。
A B C D E F 1 社員名 日付 始業時間 終業時間 休憩時間 作業時間 2 はなこ 9/12 11:30 15:00 1:00 2:30
という形が理想です
(とも) 2025/09/12(金) 16:55:49
コメントありがとうございます。
分かり易いサイトのご紹介ありがとうございます。
(とも) 2025/09/12(金) 16:56:36
コメントありがとうございます。
=A1-INT(A1)試してみました。
確かに時間だけにはなりました。
ありがとうございました。
(とも) 2025/09/12(金) 16:57:58
コメントありがとうございます。
早速やってみました。
すごいです。
就業時間が算出されて正確でした。
私の説明に問題があったので申し訳なかったですが、休憩時間が算出したかったです。
でも、この終業時間を割り出す関数使わせていただきます。
ありがとうございます。
(とも) 2025/09/12(金) 17:00:30
(わからん) 2025/09/12(金) 22:21:23
コメントありがとうございます。
確かに-1Hの計算が正確に出来ました。
しかしながら、
E2=IF(C2<TIME(13,0,0),"", TIME(1,0,0))
で実行してみると、
A B C D E F 1 社員名 日付 始業時間 終業時間 休憩時間 作業時間 2 はなこ 9/12 18:00 19:00 1:00 0:00 3 はなこ 9/13 17:30 18:00 1:00 #########
となってしまい、お昼をまたいでいない日報にも反応してしまい作業時間がゼロとなりました。
また
E2=IF(C2>TIME(13,0,0),"", TIME(1,0,0))
にしてみましたら
A B C D E F 1 社員名 日付 始業時間 終業時間 休憩時間 作業時間 2 はなこ 9/12 18:00 19:00 0:00 #VALUE! 3 はなこ 9/13 17:30 18:00 0:00 #VALUE!
因みにF列は
=D-C-E
としています。
休憩時間は取っていないのでゼロ時間で合っていますが作業時間に不具合が出ました。
E2=IF(C2>=TIME(13,0,0),"", TIME(1,0,0))
にしてみましたら
A B C D E F 1 社員名 日付 始業時間 終業時間 休憩時間 作業時間 2 はなこ 9/12 18:00 19:00 0:00 #VALUE! 3 はなこ 9/13 17:30 18:00 0:00 #VALUE! 2 はなこ 9/14 08:30 09:00 1:00 ####### 3 はなこ 9/13 09:00 14:30 1:00 04:30
という結果でした。
TIME(1,0,0)という関数を使っているから
30分の日報に対しても-1Hしてしまうのはしかたないですよね…
でもこれでは求めたい数字ではなくなってしまうので、
適当な関数ではないかなと思い他にいい方法はないか知りたいと思っています。
(とも) 2025/10/03(金) 15:56:42
そういう場合は、こうしてみる。
↓
E2セル =IF(D2="","",MAX(0,MIN("13:00",D2)-MAX("12:00",C2)))
F2セル =IF(D2="","",D2-C2-E2)
E2セルは =IF(D2="","",AND(C2<=0.5,"13:00"*1<=D2)/24) でもいいかも知れない。
(半平太) 2025/10/03(金) 17:13:12
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.