エクセルで時間の掛け算がうまくできない理由と解決方法

このQ&Aのポイント
  • エクセルで時間の掛け算に関する問題が発生しています。セルNに賃金を入力したいのですが、労働時間がうまく認識されず、正しい計算結果が表示されません。労働時間に応じて時給が変動するため、正確な計算が必要です。
  • 労働時間は以下のように計算されます:労働時間 = 終了時 - 開始時。この式に基づき労働時間を計算し、労働時間に応じて時給を乗算します。40時間以下の場合は時給のまま、40~60時間の場合は時給の1.5倍、60時間以上の場合は時給の2倍を掛け算します。
  • セルNに表示される計算結果が正しくない理由として、関数の式に問題がある可能性があります。関数の式を見直し、ロジックの誤りや演算子の誤使用がないか確認してください。また、セルの書式設定や数値の入力形式にも注意が必要です。以上の点をチェックし、正しい計算結果が表示されるように修正してください。
回答を見る
  • ベストアンサー

エクセル 時間の掛け算がうまくできません

お世話になっております。 今回は時間の掛け算について質問させてください。 セルNに賃金を入力したいのですがうまく労働時間が認識されません。労働時間は40時間以下ですと時給X労働時間、40~60時間ですと時給X労働時間を1.5倍、60時間以上ですと時給X労働時間を2倍です。 私の作った関数です。=ROUND(IF(M47<40,L47*M47*24,IF(M47>60,M47*L47*24*2,M47*L47*24*1.5)),3) ちなみに、労働時間は=(I47+K47)-(H47+J47)で計算しています。 セルH  セルI   セルJ  セルK  セルL  セルM 開始日  終了日 開始時  終了時  時給  労働時間 7-Feb-07 7-Feb-07 0:03:12 8:00:00 $22.40 7:56 7-Feb-07 9-Feb-07 8:33:46 23:26:24 $17.45 62:52 7-Feb-07 8-Feb-07 20:30:23 21:02:25 $14.75 24:32 7-Feb-07 9-Feb-07 18:39:50 21:20:00 $13.45 50:40 正しく計算されたら、セルNに上から 178.01/1321.91/361.87/753.25 と表示されるはずなのです。 どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 一般のワークシートの計算の時は、労働時間を、補助列で、10進に変えます。一度に変えようとするとミスが分からなくなります。 できれば、超過手当ての場合は、別の列で、Extra Overtime Payで、出したほうがよいです。まとめて計算を出して、給与明細というような方法、日本ではしませんね。(一応経験者。) 今回、補助列は設けさせていただきます。 仮に、O列にします。 また、数式は、47行目にあるようですが、ここでは、2行目からとします。置換で、2を47に直してもよいかと思います。 O2: 本来は、指数は、影響のない小数点第7位で丸めることにしましたが、今回は、分単位ですから、6位でも同じです。 =ROUND(M2*24,7) N2 の数式: =ROUND(L2*(MIN(O2,40)+MIN(MAX(O2-40,0),20)*1.5+MAX(O2-60,0)*2),2) 0.00が出るのが問題なら、 =IF(M2=0,"",ROUND(L2*(MIN(O2,40)+MIN(MAX(O2-40,0),20)*1.5+MAX(O2-60,0)*2),2)) としてください。 なお、 四捨五入(ROUND) 178.01 : 1,321.92 : 361.87 : 753.26 端数の1セントが合いませんね。通常、こういう場合は、ROUNDDOWN-切り捨てだと思います。 切り捨て(RONWDDOWN) 178.00 : 1,321.91 : 361.87 : 753.25 これは、お任せします。

montre
質問者

お礼

Wendy02さん、ご回答ありがとうざいます。 ご回答いただいてすぐに内容が理解できなかったため、あとでゆっくり教えていただいたことを消化したあと、お礼を書こうと思っていたので、お礼が遅くなってしまってすいません。 給料計算ですが、なかなかややこしいんですね。私も日本にいたころ(大昔)は給与計算をやっていたのですが、そういえばいくつかのセルを使って出していたのを思い出しました。 (Wendy02さんほどの高度な関数は使っていませんでしたが。) 今、MaxやMin Roundを使って例の集計表に取り組んでいます。もうすこし完成までには時間がかかりそうですが、おかげさまで何とかなりそうです。MaxやMinなど知ってはいましたが、こういう使い方をするなんて、まったく考え付きませんでした。教えてくださりありがとうございました。。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんばんは。 #3の回答者です。 >北米の大学に行っていまして、質問の問題ははInfomation Systemの授業の課題なのです) 本来は、ここでは、Homework の質問を、丸々出したら反則なんですね。こちらのカテゴリでは、あまり削除はされるケースは少ないのですが。 それはともかく、実際は、それぞれ、別々に計算して、それを足し算するというのが、問題集の解答で、私たちが書いたような、ひとまとめにしてしまうというのは解答としては良くないかもしれません。#3で説明したように、その考えの手順が見えづらくなります。おそらく、別々に計算したために、1セントの誤差が出てきたのだと思います。ただし、ROUNDDOWN 自体は間違いなさそうな気がします。 また、私の =ROUND(M2*24,7) という考え方は、本当に、何度も何度も、考えたあげくに、こうしたら、誤差が少ないという考えに基づいているわけですね。時間のまま置いておくと、思わぬ誤差丸め(浮動小数点丸めとは異質です)が発生することがあるので、なるべく、一旦、目に見える形で10進にしておいたほうが無難だと考えています。(ただ、それを人に分からせるには、浮動小数点丸めではない、Excelの問題点を説明しなければなりませんが。) =ROUND(L2*(MIN(O2,40)+MIN(MAX(O2-40,0),20)*1.5+MAX(O2-60,0)*2),2) これを、それぞれの時給単価を掛けます。  MIN(O2,40)  .....40時間まで  MIN(MAX(O2-40,0),20)*1.5...40時間より以上60時間まで  MAX(O2-60,0)*2) ....60時間より以上  これは、IF構文にしてもよいです。

montre
質問者

お礼

Wendy02さん。再度ご回答ありがとうございます。 >本来は、ここでは、Homework の質問を、丸々出したら反則なんですね はい。反則でした。前例を作ってしまい、申し訳ありませんでした。私の投稿をみて、他の学生さんが投稿しないことを願います。 (ただ、追加で付け加えさせていただけるならば、これは宿題のほんの1部で(%でいうと、5%程度)、この宿題はグループで取り組むもので、自分一人でやらなくてもよいものなのです。また、外部の人に助言を求めたり、参考書を見るのも許されています。そのかわり、今後テストがあるので、「自分でがんばらなかったら、テストでいい成績とれないので、なるべく自分でがんばってね」というのが教授の見解です。また、この授業は一般教養で、コンピューター関連を選考していない人たちがとるので、みんな知識がばらばらなのです。私の組んだグループの人たちは、エクセルは足し算機能以外はあまりわからない人たちなので、結局相談できる人がいないために、ここに投稿させていただきました。) 今、エクセルと格闘しております。明日ぐらいに、’完成しました!’という投稿ができるようにがんばります。 ありがとうございました!

montre
質問者

補足

できました~!! Wendy02さんから教えていただいたことを元に、 課題のほかの要素をくみあわせて、ついに完成しました!! やったぁぁ。。。 とってもうれしいです。 いろいろとありがとうございました。

回答No.4

横から失礼。 これまでの皆さんのやり取りで抜け落ちている部分がありますので。 「労働時間は40時間以下ですと時給X労働時間、40~60時間ですと 時給X労働時間を1.5倍、60時間以上ですと時給X労働時間を2倍です。」 これは、例えば、労働時間が70時間だった場合、その内の  ・40時間は時給X労働時間  ・20時間は時給X労働時間X1.5  ・10時間は時給X労働時間X1.0 で計算するのが一般的な計算方法です....あくまでも「一般的」なの で、montreさんの場合に当てはまるか否かは不明ですが。 これであれば、おそらく > 正しく計算されたら、セルNに上から > 178.01/1321.91/361.87/753.25 と表示されるはずなのです。 に近い数字になるのではないでしょうか(未検算です)。

montre
質問者

お礼

ご回答ありがとうございます。 まさにその通りでした! たしかに、実生活でも、残業や休日出勤したら、残業や休出分だけ増額ですよね。 ご指摘ありがとうございます。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

>正しく計算されたら、セルNに上から >178.01/1321.91/361.87/753.25 と表示されるはずなのです。 2番目と4番目の賃金は合っていますか? 40時間以上は時給、40時間超~60時間未満は時給の1.5倍、60時間以上は時給の2倍でよければ、N47の式は =ROUND(IF(M47*24<=40,L47*M47*24,IF(M47*24<60,L47*M47*36,L47*M47*48)),2) ですが、178.01/2194.42/361.87/1022.26という結果になりました。 例えば2番目の「62時間52分」は「62.867時間」ですから電卓で計算すると  17.45×62.867×2 = 2,194.05 になるはずですが、エクセルで計算した「2,194.42」とは誤差が生じています。これはJ列、K列が「秒」まで入力されており、M列には表示されていない「秒」の分まで時給を計算するからです。 分未満を切り捨てるなら労働時間は  =(I47+FLOOR(K47,"0:01"))-(H47+FLOOR(J47,"0:01")) で計算してください。FlOOR関数は基準値単位に切り捨てする関数です

montre
質問者

お礼

こんにちは。 計算方法ですが、ほかの方がご指摘してくださった通り、 労働時間を40時間以下のもの、40~60時間のもの、60時間以上のもの、と分解して、それぞれに倍数を掛け合わせる方法だそうです。 私もzap35さんと同じ考え方でしたので、ご回答を読んだときに「やっぱり教授が間違っている!」と強く確信したのですが。。(汗) 給料計算ってややっこしいんですね。。。 ともかく、いろいろとありがとうございました。

montre
質問者

補足

早速ご回答ありがとうございます。 Floor関数を使うのですね。まったく知らない関数だったので、勉強になりました。教えてくださってありがとうございます。 早速、試してみました。教えていただいた通りに入力しましたところ、 確かに2番目と4番目の数字がそれぞれ、2194.05と1022.25となりました。この数字に関しまして、早速教授に連絡をとってみます。(私は今、北米の大学に行っていまして、質問の問題ははInfomation Systemの授業の課題なのです) 教授から返信がき次第、後日折り返し、投稿させていただきたいと思います。 お忙しいところ恐縮ですが、もうすこしお付き合いください。

  • dogsiva
  • ベストアンサー率32% (92/279)
回答No.1

IF関数の、条件部分の「M47」を「M47*24」にしてみるのはいかがでしょうか。 (M列に入っている実数値が日数(12時間なら0.5)のため)

montre
質問者

お礼

(お礼を投稿しようとしたら、補足の欄に間違ってにゅうりょくしてしまいましたので、再度投稿します) 早速ご回答ありがとうございます。 実数値が日数(12時間なら0.5)計算なのですね。 勉強になりました。 ありがとございます。 (ただ、残念ながら、これですと2番目の数字が、2194.41となってしまうのです)

montre
質問者

補足

早速ご回答ありがとうございます。 実数値が日数(12時間なら0.5)計算なのですね。 勉強になりました。 ありがとございます。 (ただ、残念ながら、これですと2194.41となってしまうのです)

関連するQ&A

  • エクセルで時間の引き算をするには

    お世話になっております。 エクセルでの時間の計算について教えてください。 開始日と終了日と開始時刻と終了時刻が4つのセルに分かれています。それらを使って勤務時間をだしたいのですが、どうしたらいいのでしょうか。 開始日=セルA、終了日=セルB、開始時刻=セルC、終了時刻=セルDとします。これらを使って勤務時間を計算し、時給=セルEを掛け合わせ給料をセルFに出したいのですが、どうやってエクセルにセルAとセルCを2つ認識させ、その上セルBとセルDを引いて勤務時間をだせばいいのでしょうか? (問題のエクセルです↓) セルA セルB セルC  セルD   セルE  セルF 7-Feb-07 7-Feb-07 0:03:12 8:00:00 $22.40 5-Feb-07 6-Feb-07 15:45:47 13:38:43 $9.79 7-Feb-07 9-Feb-07 8:33:46 23:26:24 $17.45 8-Feb-07 8-Feb-07 8:10:30 23:59:51 $21.99 7-Feb-07 8-Feb-07 20:30:23 21:02:25 $14.75 7-Feb-07 9-Feb-07 18:39:50 21:20:00 $13.45 6-Feb-07 6-Feb-07 1:03:42 20:58:34 $21.99 どうぞよろしくお願いいたします。

  • エクセル・時間の合計が合わない

    実労働時間の1ヶ月の合計をだすのに、SUMを使ったのですが、 合計がすごく小さい数字になります。 表示は※※:※※で表示しています。 表の内容は下記の通りです。 4行目に題名 ・B出勤時刻・C休憩開始・D休憩終了・E退社時刻 F4・I4・L4・N4・Q4=0:00 G4・J4・M4・O4・R4=17:00 F  =IF($E5-F$4>0,$E5-F$4,0)-IF($B5-F$4>0,$B5-F$4,0) G  =IF($E5-G$4>0,$E5-G$4,0)-IF($B5-G$4>0,$B5-G$4,0) I  =F5-SUM(J5:$K5) L  =IF($D5-L$4>0,$D5-L$4,0)-IF($C5-L$4>0,$C5-L$4,0) M  =IF($D5-M$4>0,$D5-M$4,0)-IF($C5-M$4>0,$C5-M$4,0) N  =L5-SUM(O5:$P5) O  =M5-SUM(P5:$P5) Q  =I5-N5  (実労働時間17時までの1日の計) R  =J5-O5  (実労働時間17時からの1日の計) Qに=SUM(Q5:Q14) Rに=SUM(R5:R14) を入力しましたが、まったく違う時間数になります。 どうすれば正しい計算式がでるのでしょうか? お教え願いたくお願い申し上げます。

  • エクセルでの時間表示

    エクセルで労働時間を管理したいと考えております。 1ヶ月の労働時間が168時間だったので、セルに168:00と入力すると168:00:00と表示されています。 しかし、数式バーを見ると1900/1/7 0:00:00と表示されています。 セルの書式設定は[h]:mm:ssです。 上記内容の数字で計算に使っても差し支えないのでしょうか。 自分としては数式バーのところも168:00と表示されて欲しい気がします。 計算例:時給を掛けて賃金を算出。工程の割合により労働時間を案分など よろしくお願い致します。

  • エクセル2003の時間計算の合計

    エクセル2003で時間計算のワークシートを作りました。 1日の労働時間が細切れで、4回くらいの小計を出すことはできたのですが、その合計がどうしても計算できません。 A列:月日 B列:1回目の開始時間 C列:1回目の終了時間・・・ 時間で入力しています。その横に1回目、2回目・・・という風に =TEXT(C7-B7,"h:mm") という計算式を入れて計算させています。 その書式設定を、標準にしても、時間にしても、1,2,3,4回目の合計がn列に =SUM(J7:M7) と入れても、できません。”0”になってしまいます。とても困っています。どうかよろしくお願いします。          

  • Excel 日付をまたぐ労働時間の計算方法

    今回、労働時間の計算方法とその合計時間をExcelで作成したいと思ったのですが 合計時間が表示されません。 教えていただけたら嬉しいです。 お願いします。 A2セル 日付        2017/11/1 B2セル 開始時間      8:00 C2セル 終了日付及び時間  2017/11/2 10:00 D2セル 休憩時間      6:00 E2セル 労働時間      =C2-B2+IF(B2>=C2,1)-D2               20時間の計算となります。 上記の表を作成し日々の労働時間の合計をSUMを使って計算すると全然違う数字になります。 今月の労働合計時間を表すにはどのようにすればいいでしょうか? 合計時間を表記するセルには 書式設定→ユーザー定義→[h]:mm を用いて表記しています。 どなたか詳しい方よりご教授いただければ幸いです。 宜しくお願い致します

  • エクセル関数おしえください。

    時間管理にもとずいて、計算をする式を教えてください。 下記の場合は、どのような関数でいけますか? 宜しくお願いします。 例)(1) エクセルに入力は、 セルA1「開始時間」 セルB1「終了時間」 セルC1「時間内労働」(9時間までで1時間休憩) セルD1「時間外時間」(8時間労働を越えた時間) セルE1「深夜時間外」(22時を超えた時間) *時給は@1350を基本とし、時間外は1.25増し、深夜は1.5増しとする。 *時間は1分は10分に切り上げる(3:51の場合は4:00) 導き出したい合計は、セルF1に「時間内労働」の時給合計、セルG1に「時間外時間」の時給合計、セルH1に「深夜時間外合計」セルI1にセルF1とG1とH1の総合計です。 言葉が足らないかもしれませんが、よきアドバイス宜しくお願いします。

  • エクセルでの掛け算

    M=2.2×3×(D2-d2)×h/8×nと言う式があります。 この式にいろんな数値を入力して計算したいのですがどうすればよいでしょうか。 よろしくお願いします。 D2は二乗です。

  • エクセルの計算式について教えて下さい

    次の計算式にて計算させています。  求める時間:J24=H24+TIME(0,0,$E$15)+V24+R24   H24 ⇒ 数値(時間)が入力されているセル     H24 6:30(開始時間)     H25 7:24     H26 8:19     ↓      H40 0:05     H41 1:10(終了時間)    1:00+α   *α(単位は時間で、0.5時間等と変化させます    V24 ⇒ 数値(時間)が入力されているセル  0:15    R24 ⇒ 数値(時間)が入力されているセル  0:55    $E$15 ⇒ 固定する数値が入力されているセル 単位:秒 そこでJ24=H24+TIME(0,0,$E$15)+V24+R24の値が1:00+$C$19を超えた場合は1:00+$C$19と表示させたく次の式を作成しました。  求める時間: J24=IF(AND(H24+TIME(0,0,$E$15)+V24+R24>=(1+$E$15)/24,(1+$E$15)/24<H24),(1+$E$15)/24,IF(AND(H24+TIME(0,0,$E$15)+V24+R24>(1+$E$15)/24,H24+TIME(0,0,$E$15)+V24+R24<(6+30/60)/24),"Error",H24+TIME(0,0,$E$15)+V24+R24)) しかしH41(1:10)に対してJ41=1:00+$C$19と計算させたかったのですが、J41=H41+TIME(0,0,$E$15)+V41+R41としか計算されなかったため、色々と試行錯誤しましたが直りませんでした。 そこで今回作成した式の間違いと正しい式を教えて下さい。 よろしくお願い致します。

  • エクセルで出勤時間で時給を変更させたい!

    力を貸してください。 今使ってる勤怠を利用してこんなことがしたいのですが、    C16     D16     E16      F16       G16   H16    I16       出勤時間  退勤時間  休憩時間  実働時間    時 給  ・・・・・  ・・・・・ 上記のよう勤怠を使っています。現在はG16の時給の部分にVLOOKUP関数を使って個人データーから時給を拾ってます。  今回新しく日勤と夜勤の現場ができまして、日勤と夜勤で時給が違うのですが、シフトで交互の勤務となり 出勤時間で時給を変動させたいのです。 時給が入力してある個人データーにセルの行を増やすことができないので L16に日勤時給  M16に夜勤時給を入力  G16にIF関数を使い C16の出勤時間によってL16・M16どちらかの時給をを選択させればと 考えてます。  G16にどのような式を当てはめれば良いですか、 又もっと良い方がありますか よろしくお願いします。 日勤 8:00~20:00  900円    夜勤 20:00~8:00 1000円

  • エクセルの関数の読み取り方を教えてください。

    エクセルで夜間の出勤時間の管理をしております。 以前在籍しておられた方が作られたようなのですが 関数初心者の私では読解するのが困難なので お教えいただきたく投稿しました。 完成されてる表を掲載できればいいのですが・・・ 関数を掲載させていただきますので その関数の読み取り方をお教えいただければ幸甚です。 A列 日付 B列 始業時間 C列 終業時間 D列 計算用退勤表記 E列 拘束時間 F列 労働時間 G列 深夜労働時間 H列 残業時間 I列 普通勤務 J列 深夜勤務 K列 普通残業 L列 深夜残業 D列 =IF(COUNT(B5:C5)=0,0,C5+IF(C5<=B5,"24:00",0)) F列 =IF(E5-$B$37<0,0,E5-$B$37) G列 =IF(COUNT(B5:C5)=0,0,MAX(0,"5:00"-B5)-MAX(0,B5-"22:00")+MAX(0,D5-"22:00")-MAX(0,D5-"29:00")-$B$37) H列 =IF(F5-$B$38<0,0,F5-$B$38) I列 =IF(D5-B5-H5-G5-$B$37<0,0,D5-B5-H5-G5-$B$37) J列 =IF(I5=0,0,$B$38-I5) K列 =IF(F5-I5-J5-L5<=0,0,F5-I5-J5-L5) L列 =IF(G5-J5<=0,0,G5-J5) 基本休憩時間 2:00(=B37) 所定労働時間 8:00(=B38) 深夜終了時刻 5:00(=B39) 深夜開始時刻 22:00(=B40) 深夜労働時間 5:00(=B41) 当番休憩時間 1:00(=B42) 表の内容はこんな感じなのですが。 これでわかりますでしょうか? 基本の時間は20:00~7:00 です また、万一勤務時間が17:00~4:00の場合 どこの計算式がどのようにわかりますでしょうか? 文字の羅列になって申し訳ございませんが 宜しくお願い申し上げます。

専門家に質問してみよう