Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
出勤実働時間について
投稿日時: 19/10/19 22:02:53
投稿者: 桃太郎7

よろしくお願いします。
出勤簿実働時間を計算する数式を教えてください。
     A    B     C     D     E   
 1 名前  出勤時間  退社時間  休憩時間  実働時間
 2 平野   12:15   19:25    45         =C2-B2-TIME(0,D2,0)で数式を入力
 3 加藤   18:45   26:30    60         正しい時間が出ません。
 4 伊藤    8:50   13:15    30         
 5 高橋   15:30   20:35     30     質問:E列の実働時間を計算する
                               数式を教えてください。
 
  エクセル本から参考にして、作成しました出勤簿です。
 
シリアル値が良くわかりません、よろしくお願いします。

回答
投稿日時: 19/10/19 22:29:39
投稿者: 半平太

>=C2-B2-TIME(0,D2,0)
 
特に問題なさそうですけどねぇ・・
C2の書式をコピーして、E2のセルに貼り付けてみてください。
 
時間シリアル値は、1日(24時間)を1として数値管理するものです。
つまり、ラフに言えば、1時間(=1:00)は 1/24 です。
 
それは、0.041666667 と言うことなんですが、
それを見て 1時間(1/24)なんて分からない人が多いので、
セルの書式をh:mmに設定することによって、
エクセルが見てくれ良く「1:00」と表示してくれる仕掛けになっています。

回答
投稿日時: 19/10/20 10:04:27
投稿者: WinArrow
投稿者のウェブサイトに移動

>正しい時間が出ません。
少し、説明が不足しています。
 
数式は間違っていないように感じられますが、
掲示した数式では、どのような「答え」になっていて
どのような「答え」を期待しているのか
を説明していただきたいです。
 
なお、蛇足にになりますが、
数式(関数を含む)では、「値」を参照します。
今回のように日付や時間を対象とした計算の場合、「値」とは、「シリアル値」のことです。
 
シリアル値については、半平太さんの説明の通り、時刻(時間)は、小数点以下の数値になります。
セルに、時刻形式で入力するとExcel内部では、シリアル値で保持されています。
勿論、計算結果もシリアル値になります。
それをどのような形式で、見せる(見えるようにする)かを「表示形式」で設定します。
 
試しに、「12:15」と入力したセルの表示形式を「標準」に変更してみてください。
シリアル値が表示されます。

投稿日時: 19/10/20 14:49:09
投稿者: 桃太郎7

ご回答ありがとうございます
質問が不十分で申し訳ございません。
E列欄に(実働時間)を求めて給料計算に利用したいです。
エクセル本を参考にしての問題で、
    A    B     C     D     E   
  1 名前  出勤時間  退社時間  休憩時間  実働時間
  2 平野   12:15   19:25    45    6.25  =C2-B2-TIME(0,D2,0)で数式を入力
  3 加藤   18:45   26:30    60    6.45         
  4 伊藤    8:50   13:15    30    3.55        
  5 高橋   15:30   20:35    30     4.35     E列<これが参考書の答えです>
                           上記の数式では、違った数値で返されます
   >試しに、「12:15」と入力したセルの表示形式を「標準」に変更してみてください。
    *整数の「1215」になります。
 
  追加質問で申し訳ないですが、E列の1ケ月合計は普通にオートSUMで求めていいですか?
   宜しくお願いします。
   

投稿日時: 19/10/20 16:42:02
投稿者: 桃太郎7

WinArrow さん、いつも大変お世話になっています。
原因がわかりました! 私のB列・C列への入力を先日「ExcelVBAを学ぶならmoug」の情報で
時刻の入力方法を簡単に入力出来る例、「ユーザー定義から「0":"00」を設定」しておきますと
8:00の入力を「800」を入力すると「8:00」で表示されますのでこれが原因でした。
ユーザー定義を削除したら正常に計算が出来ました。
 
moug提案のユーザー定義をしますと便利ですので、改めてこの場合は如何にしたら良いでしょうか?
ご無理な質問ですが宜しくお願いします。

回答
投稿日時: 19/10/20 17:05:12
投稿者: んなっと

https://www.moug.net/tech/exopr/0030073.html

引用:
●補足●
この場合、入力データは時刻として認識されませんので、時刻計算をされる際にはご注意ください。

と書いてありますね。
他人が使うことも考えられる場合は、今すぐやめた方がいいと思います。
 
どうしてもというなら...
 
   A     B     C     D     E
1 名前 出勤時間 退社時間 休憩時間 実働時間
2 平野   1215   1925    45   6:25
3 加藤   1845   2630    60   6:45
4 伊藤    850   1315    30   3:55
5 高橋   1530   2035    30   4:35
 
E2
=TEXT(C2,"0!:00")-TEXT(B2,"0!:00")-TIME(0,D2,0)
下方向・↓

回答
投稿日時: 19/10/20 17:43:22
投稿者: WinArrow
投稿者のウェブサイトに移動

>「800」を入力すると「8:00」で表示されますのでこれが原因でした。
 
この場合、
「値」は、800で、表示形式が「8:00」
ということになります。
 
前レスにも書きましたが、
計算は「値」を参照するので、800・・・・つまり、時刻(時間)ではないですね?
 
>ユーザー定義をしますと便利ですので、改めてこの場合は如何にしたら良いでしょうか?
今回のような姑息なことをすると
厄介な数式を組むことに繋がります。
後任の担当が悩むことにもつながります。
 
時間計算をする場合は、今回のような姑息なことはやめて
オーソドックスな対応することです。
 
 
 

回答
投稿日時: 19/10/20 17:48:32
投稿者: WinArrow
投稿者のウェブサイトに移動

ついでに
入力値:800
表示形式:0":"00
 
これは、時刻という前提での対応です。
しかし、誤入力への対応はどうなんでしょう?
 
たとえば、
870
というようなあり得ない数字を入力されても
チェックができていませんよね?
 
 
 

投稿日時: 19/10/20 17:53:41
投稿者: 桃太郎7

ご回答ありがとうございました。