質問投稿でgooポイントが当たるキャンペーン実施中!!>>

エクセルでの勤務時間の計算方法なのですが、

例えば、出勤 23時00分  退勤  7時00分

    出勤 7時00分   退勤  15時00分

の勤務時間をエクセルで足し算、引き算、合計計算の方法を教えてもらえませんか?

合計計算のように別々の複数の合計計算を出来るようには出来ないのでしょうか?


宜しくお願いします>

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>エクセル初心者なのでよく分かりません。



ご存じの通り、エクセルには計算、集計などなどに便利なように約250~340の関数が用意されています。
通常は、この中から目的に合った関数を使用します。 用意されたものにない場合は自分用の関数も作成し使用することもできます。 これでも解決できない場合は、VBAというプログラム言語(マクロはこの一部)を使用して解決できます。


>なぜにIF関数を使うのか

このケースで、なぜにIF関数を使ったかというと、時間の引き算をする時にマイナスになると正しく表示してくれないことと、簡単で分かりやすい関数であることであるからです。


>B2-A2<0の意味
>,を挟んでの3つの式の必要性を教えてもらえないでしょうか?

各関数には、それぞれ固有の書式というものが設定されています。 これに従って値を設定しないと正しい答えは得られません。 この書式はエクセルのヘルプに書かれていますのでそれに従います。

IF関数の書式は、次の通りです。 (通常のエクセル用)

  IF(論理式[,真の場合][,偽の場合])    [ ]の部分は省略可能という意味

となっています。

  =IF(B2-A2<0,B2+1-A2,B2-A2)

論理式は、「B2-A2<0」で意味は、もしセル"B2"の値から"A2"の値を引いた結果が「負」であったならば...
真の(負の数である)場合は、セル"B2"の値に「1」を加えてから"A2"の値を引いた結果を表示する。
偽の(0または正の数である)場合は、そのままセル"B2"の値から"A2"の値を引いた結果を表示する。

なお、エクセルのヘルプには大きく分けて2種類のヘルプがあります。 通常のエクセルのシートを開いている状態で見るヘルプはエクセル一般のヘルプです。 VBエディターからのヘルプは、VBA用で内容が違っています。

エクセルも結構奥が深いのでどこまで勉強したらよいかというのはありません。 何か疑問に思った時に人に聞く程度でしたら、数年たっても実用に適すだけの知識、技量は得られません。
特に会社での日常業務でエクセルを使うのであれば、最低数種類の参考書籍を購入して、毎日眺めながら、少しづつでも取り組み利用していくことを強く勧めます。 皆さんそうしています。 

関数1つづつ制覇していくのは仕事もはかどるし楽しいものですよ。 頑張ってください。
    • good
    • 0
この回答へのお礼

大変解りやすい回答有難うございました。

理解できたと思います。

しかしいきなりこの式を自分で発想するのは困難と思います。

エクセルは奥が深いですね。

自分も少しはエクセルを勉強しようと思いました。

本当に有難うございました。

お礼日時:2008/09/24 19:06

   A    B    C


1 23時00分 7時00分 8時00分
2 7時00分 15時00分 8時00分
3  

C1:=IF(A1>B1,B1+1-A1,B1-A1) (書式は「h"時"mm"分"」)
C2:=IF(A1>B1,B1+1-A1,B1-A1) (書式は「h"時"mm"分"」)
C3:      =SUM(C1:C2) (書式は「[h]"時"mm"分"」)
和      =C1+C2    (書式は「[h]"時"mm"分"」)

ANo.1さんに代わって、
解説
:=IF(A1>B1,B1+1-A1,B1-A1)
もし、A1>B1なら、B1+1-A1の計算をしろ、そうでなければ(A1<=B1なら)B1-A1の計算をしろ、ということ。B1がA1より小さいと負数になって、時間は表せない。時間は24時間で0にもどるので、そのまま計算すると負数になる場合がある。
Excelでは、内部処理(シリアル値)で、小数点以下を時間に、整数部分を日付にしているので、24時間は1になる。それで1を足している。
とりあえずこんな説明しかできない。

これで納得できない部分は、自分で勉強する。
日付・時間の計算は難しい。しょっちゅう勘違いする。
    • good
    • 0

時間の計算は、基本的には一般の四則算に準じます。


ただ、24時間を超えると切り捨てられます(日数に回されます)。
これを回避するためには、書式設定が必要です。
設定したい範囲を選択状態にして、右クリック→セルの書式設定→表示形式→分類で、ユーザー定義を選択します。
種類の欄に、[h]:mm と記入、OK をクリックして完了。

〔計算例〕
    ,  A列    ,  B列    ,  C列
1行 , 出勤時刻 , 退勤時刻 , 勤務時間
2行 ,  23:00   ,  07:00   , =IF(B2-A2<0,B2+1-A2,B2-A2) ← 引き算 
3行 ,  07:00   ,  15:00   , =IF(B3-A3<0,B3+1-A3,B3-A3) ← 引き算
4行
5行 ,        ,        , =SUM(C2:C3) ← 合計
6行 ,        ,        , =C2+C3     ← 合計 = 足し算

IF文中、B+1、B3+1 の“1”は、1日=24時間 の意味です。

この回答への補足

お返事大変有難うございます。

なぜにIF関数を使うのか。

B2-A2<0の意味

,を挟んでの3つの式の必要性を教えてもらえないでしょうか?

エクセル初心者なのでよく分かりません。

お時間があればでかまいませんので宜しくお願いします。

補足日時:2008/09/22 23:58
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで60進法計算の仕方を教えてください

エクセルで60進法計算の仕方を教えてください

時間表記ではなく、小数点表記(小数点以下2桁)で60進法の計算をしたいのです。

例) 0.60 になったら → 1.00 と表記される

具体的には、 0.10 + 0.50 = 1.00
1.20 + 0.50 = 1.10
1.50 + 1.50 = 3.40

となる計算にするには、マクロ以外の方法でどうしたらよいでしょうか、教えてください。
宜しくお願いします(><)

Aベストアンサー

0.6進法の数値に変換後、SUM関数で合計し、元に戻してやれば簡単に計算出来ると思います。

例えば、A列に元数値、B列に0.6進法の数値とすれば

  A1=1.2
  A2=0.5

の場合

  B1=int(A1)*0.6+mod(A1,1)
  B2=int(A2)*0.6+mod(A2,1)・・・・・セル[B1]をセル[B2]にコピーする
  B3=int(sum(B1:B2)/0.6)+mod(sum(B1:B2),0.6)・・・・・答え

もし、計算対象が沢山あったとしても、セル[B1]を必要行コピーして、最後に元に戻す計算式を入力すれば、いくらでも計算出来ます。

Qエクセルで10進法から60進法に変換する方法

エクセルで10進法から60進法に変換する方法を教えてください。
たとえば、31.7041667という数字があったとして、それが31度42分15秒という角度に変換したいのです。関数電卓では簡単にできるのですが、エクセルでの方法、また関数などあったら教えてください。

Aベストアンサー

ちょっと裏技的ですが。

1.31.7041667を24で割ります。
2.セルの書式設定でユーザー定義を選び、
[h]度mm分ss秒
と入力します。

以上です。

Q10進法で時間の計算で30分が0.5だったら、その計算方法が分かりませ

10進法で時間の計算で30分が0.5だったら、その計算方法が分かりません、教えてください。

Aベストアンサー

例えば、180分は何時間でしょうか?
60,60,60で3時間。つまり、180÷60で3時間と
やりませんか?

分が60より小さくても同じことです。60で割れば分の単位から
時間の単位にかえることができます。

ただ、6の倍数になってない10分とかは割り切れないので、その
ようなときは普通、分数で 10÷60→10/60→1/6 の
ように表すことが多いと思います。

Qエクセルで時間表示を負(-)で表示方法

エクセルで勤務時間を管理しています。
昨年と同月などの時間比較で計算させているのですが、負の値になると表示ができません。

時間での計算結果が負の値でも、括弧やマイナス"-"を付けて時間表示させる方法はないでしょうか?

Aベストアンサー

[ツール]→[オプション]→[計算方法]で
[1904年から計算する]にチェックを入れると
負の時間はマイナス表示されるようになります。

しかし、日付の計算方法が異なるので、
(例えば、2006/11/19は2010/11/20に変わってしまいます)
既に入力されている日付データは
すべて入力し直さなければなりません。
大量にあるとちょっと大変ですね。

データ修正が不可能であれば、No.1さんのご回答のように
するのが最善の方法だと思います。

Qexcelで時間の引き算でマイナス表示にしたい

残業時間の計算をしたいのです。
時刻部分の書式設定は「時刻」(でしたか?自宅PCにexcelがなく確認できず)
うろ覚えなので、突っ込みはご容赦ください。
ともかく時間の引き算でマイナスを表示できたらよいのです。

先月 5:00:00
今月 3:00:00
引き算2:00:00 これは単純に引き算したらokです。

先月 3:00:00
今月 5:00:00
   -2:00:00 としたいのですが(マイナスじゃなくて△でもよい)
エクセル上では、時刻の引き算で負の数かセルの幅より大きい数は####になりますよね。

今月は、先月より残業減ったね/増えたね という表を作りたいので、
マイナスはマイナスで表示させたいです。

そういう計算式、関数は組み立てれませんでしょうか?

Aベストアンサー

個人で使う場合はNo.1の方の方法でいいですが、
会社で使う場合は止めた方がいいですね。

A2="先月"、A3="今月"、B2=3:00:00、B3=5:00:00 として
■2セルを使って表示する方法
A4=IF(COUNT(B2:B3)=2,SIGN(B2-B3),"")
として表示形式をユーザー定義で ;"-";;@
B4=IF(COUNT(B2:B3)=2,ABS(B2-B3),"")

■1セルで文字列として表示する方法
B4=IF(COUNT(B2:B3)=2,IF(B2>B3,"","-")&TEXT(ABS(B2-B3),"[h]:mm:ss"),"")

Q60進数の四則計算

いつもお世話になります。
煮詰まっております。いい方法をご教授頂けたらと思います。

小数点以上は10進数、小数点以下(2桁まで)を60進数で表す数値があります。

1.30
↑↑↑
||-60進数
 -区切り
-10進数


このように表す数の四則計算をして、足し算は問題なく出来ます。

それ以外を計算する方法がうまくいきません。
一度数を10進に戻して・・・と思ったのですが、繰り上がり等でおかしくなっています。

期待値は
6.30×1.30=9.45
8.00÷2.00=4.00
などです。

よろしくご教授くださいますようお願い致します。

Aベストアンサー

'パラ1・パラ2に値
'パラ3は0~3までの値(+-×÷)
Function TimeCalc(inSng1 As Single, inSng2 As Single, inMode As Byte) As Single
  Dim sngCalc As Single
  Dim strWk  As String
  
  Dim sngWk1 As Single
  Dim sngWk2 As Single

  sngWk1 = Convert10(inSng1)
  sngWk2 = Convert10(inSng2)
  
  Select Case inMode
    Case 0: sngCalc = sngWk1 + sngWk2
    Case 1: sngCalc = sngWk1 - sngWk2
    Case 2: sngCalc = (sngWk1 * sngWk2) / 100
    Case 3: sngCalc = (sngWk1 / sngWk2) * 100
  End Select
  
  TimeCalc = (sngCalc \ 100) & "." & Format(((sngCalc Mod 100) * 60 / 100), "00")
End Function

'一次変換用
Function Convert10(inSng As Single) As Single
  Dim strWk  As String
  
  strWk = Right(Format(inSng, "#.#0"), 2)
  Convert10 = CSng(Int(inSng) & (CSng(strWk) / 60 * 100))
End Function

'パラ1・パラ2に値
'パラ3は0~3までの値(+-×÷)
Function TimeCalc(inSng1 As Single, inSng2 As Single, inMode As Byte) As Single
  Dim sngCalc As Single
  Dim strWk  As String
  
  Dim sngWk1 As Single
  Dim sngWk2 As Single

  sngWk1 = Convert10(inSng1)
  sngWk2 = Convert10(inSng2)
  
  Select Case inMode
    Case 0: sngCalc = sngWk1 + sngWk2
    Case 1: sngCalc = sngWk1 - sngWk2
    Case 2: sngCalc = (sngWk1 * sngWk2) ...続きを読む

Q10進法の数を60進法の数に変換するには

 10進法で表された0.06は60進法ではいくつですか。
 一般に、10進数を60進数に直す方法が分りません。特に、小数の場合。
 よろしくお願いします。

Aベストアンサー

10進法は1,2.3・・9で10になったところ1の位から10の位に桁数があがります。
60進法は、たとえば時間で考えれば1.2.3.・・・59秒から60秒になったとき1分になります、つまり60で秒という位から分の位になります。また分も60分で1時間というように分から時間という位にかわります。

10進法での表記を考えてみましょう。
例えば456は100(10^2)の位が4
      10(10^1)の位5
       1(10^0)の位が6
つまり456=4×10^2+5×10^1+6×10^0

小数については、例えば
12.3=1×10^1+2×10^0+3×10^-1

60進法も同じです
7322秒を60進法であらわして見ましょう
7322のなかに60^2は2個あるので2時間(秒より2つ上の位)7322÷60^2=2余り122
次に122のなかに60^1は2個あるので2分(秒より1つ上の位)122÷60^1=2余り2
最後に2のなかに60^0は2個あるので2秒
つまり7322秒は2時間2分2秒となります。

0.06も同じ考え方で出来ます。
0.06のなかに60^-1(60分の1)はいくつありますか
0.06=6/100
  =36/600
  =30/600+6/600
  =3×1/60+1/100
となるのでこたえは3であまりは1/100となります。

次に1/100のなかに60^-2(3600分の1)はいくつありますか
1/100=36/3600
となるのでこたえは36
よって
0.06を60進法であらわすと0.(3)(36)となります。()で囲まれた数字がそれぞれの桁の数字です。
時間を例に取れば0.06時間は時間より1つ下の位分の係数が3で2つ下の位秒の係数が36と言うことです。

10進法は1,2.3・・9で10になったところ1の位から10の位に桁数があがります。
60進法は、たとえば時間で考えれば1.2.3.・・・59秒から60秒になったとき1分になります、つまり60で秒という位から分の位になります。また分も60分で1時間というように分から時間という位にかわります。

10進法での表記を考えてみましょう。
例えば456は100(10^2)の位が4
      10(10^1)の位5
       1(10^0)の位が6
つまり456=4×10^2+5×10^1+6×10^0

小数については、例えば
12.3=1×10^1+2×10^0+...続きを読む

Qエクセルで分から時間に変換したいのですが

いつもお世話になっています。よろしくお願いいたします。
エクセルで「分」の合計を「時分」に変換して表示したいのですがどうもうまくいきません。
どなたかご教授願えないでしょうか?
例:200(分)=3時間20分もしくは3:20
お願いいたします。

Aベストアンサー

A1に「分」が入っていて、別のセルに時分に変換して表示する場合とします。

24時間(1440分)未満であれば、
=A1/1440
とし、セルの書式設定で以下のいづれかを設定すればOK。
(1)[時刻]→[13:30]を選択
(2)[ユーザー定義]→h:m
(3)[ユーザー定義]→h時間m分
※分単位は常に2桁(2時間05分など)で表示したいなら
 (1)の設定か、またはmをmmに変更してください。


上記方法では23時間59分までしか正しく表示できないので、
もし24時間(1440分)以上になる場合は別の方法が必要です。
=INT(A1/60)&":"&MOD(A1,60)
または
=INT(A1/60)&"時間"&MOD(A1,60)&"分"
※分表示を常に2桁にするのであれば、
 MOD(A1,60)をRIGHT("0"&MOD(A3,60),2)に変更してください。

Q60進法の考え方

基本的なことで申し訳ありません。60進法の計算方法がいまいちわかりません。
実労時間が「94.6h」とします。これを就業時間に直したとき「95:00」になるのはどんな計算になるのでしょうか・

その計算または、わかりやすいHPアドレスを教えてください。
探したのですがいまいちわかりません。
ちなみにこれはExcel計算ではありません。

Aベストアンサー

「0.0時間」は「10分の0時間」「0/10時間」です。つまり「0/60時間」なので「0分」です。
「0.1時間」は「10分の1時間」「1/10時間」です。つまり「6/60時間」なので「6分」です。
「0.2時間」は「10分の2時間」「2/10時間」です。つまり「12/60時間」なので「12分」です。
「0.3時間」は「10分の3時間」「3/10時間」です。つまり「18/60時間」なので「18分」です。
「0.4時間」は「10分の4時間」「4/10時間」です。つまり「24/60時間」なので「24分」です。
「0.5時間」は「10分の5時間」「5/10時間」です。つまり「30/60時間」なので「30分」です。
「0.6時間」は「10分の6時間」「6/10時間」です。つまり「36/60時間」なので「36分」です。
「0.7時間」は「10分の7時間」「7/10時間」です。つまり「42/60時間」なので「42分」です。
「0.8時間」は「10分の8時間」「8/10時間」です。つまり「48/60時間」なので「48分」です。
「0.9時間」は「10分の9時間」「9/10時間」です。つまり「54/60時間」なので「54分」です。
「1.0時間」は「10分の10時間」「10/10時間」です。つまり「60/60時間」なので「60分」です。

>実労時間が「94.6h」とします。これを就業時間に直したとき「95:00」になるのはどんな計算になるのでしょうか・

上記より「0.6時間は、0時間36分」ですから「94.6時間は、94時間36分」です。

憶測ですが、会社の規定で「1時間未満の就業時間は、30分未満は切り捨て、30分以上は切り上げ」になっている筈で、その規則に従えば「36分は30分以上なので切り上げ」です。

そして「実働時間が94時間36分なら、端数の36分を切り上げて、就業時間は95時間」っていう「切り上げ」を行います。

つまり「計算なんかしていない。規則に従って、切り捨てか切り上げをしてるだけ」が、この質問の回答になります。

「0.0時間」は「10分の0時間」「0/10時間」です。つまり「0/60時間」なので「0分」です。
「0.1時間」は「10分の1時間」「1/10時間」です。つまり「6/60時間」なので「6分」です。
「0.2時間」は「10分の2時間」「2/10時間」です。つまり「12/60時間」なので「12分」です。
「0.3時間」は「10分の3時間」「3/10時間」です。つまり「18/60時間」なので「18分」です。
「0.4時間」は「10分の4時間」「4/10時間」です。つまり「24/60時間」なので「24分」です。
「0.5時間」は「10分の5時間」「5/10時間」です。...続きを読む

QExcelの計算で、分の合計を『~時間~分』に置き換える方法を教えて下

Excelの計算で、分の合計を『~時間~分』に置き換える方法を教えて下さい!

例 30
   50
   60
   140 ←上の数字の合計です。この部分を『~時間~分』に置き換えたいです。

よろしくお願いします。

Aベストアンサー

 =TEXT(140/1440,"h時間m分")

分の数値が整数なら1440で割ってシリアル値に直せば普通に時間として表示できます。
TEXT関数を使わなくてもセルの書式設定で可能ですよ。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング