- ベストアンサー
【OpenOffice Calc】で時間の合計
- 【OpenOffice Calc】で自分の日々の勤務時間を計算し、一ヶ月分の勤務時間を合計する方法を紹介します。
- 日々の勤務時間を指定の書式で計算し、一ヶ月分の勤務時間をオートSUMで合計すると、マイナス値や正しくない合計値が表示される問題が発生しています。
- この問題を解決するために、セルの書式設定や数値の計算方法に注目し、正しい合計値を表示させる方法を説明します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
出退勤の時刻を入力するとき、年月日も入力してください。 年月日を表示したくなければ表示形式はH:MM としておけばいいでしょう。 年月日が入力されていないと、たとえば、17:01 は1989/12/30 17:01 になるようです。(私のLibre ではそうなります。) 5:35 は翌日ですが、年月日が入力されていないと同じく1989/12/30 5:35 です。 したがって、5:35 - 17:01 はマイナスの値になります。 エクセルなら表示形式をh:mm にすると#####..... になります。 Libre でも計算結果はマイナスです。(表示形式を標準にすると、値はマイナスであることがわかります。) 計算結果を格納するセルの表示形式を「標準」にすると、 5.35 - 17:06 = -0.47986、 5.04 - 17.01 = -0.49792 です。 表示形式を「H:MM」にすると、 5.35 - 17:06 = 12:29、 5.04 - 17.01 = 12.03 になります。 どうやら、時刻の引き算の計算結果がマイナスになると、数値が小さい方を翌日とみなすような処理がなされているようです。 合計は、(-0.47986) + (-0.49792) = -0.97778 になります。 表示形式を「H:MM:SS」にすると、-23:28:00 になります。 合計の計算は、時刻の計算ではなく数値の加算ですので、おかしな処理は行われず、0.97778 は23:28:00、それにマイナスがついて-23:28:00 と表示されます。 エクセルなら#####.....となって、何が表示されているかわかりません。
その他の回答 (2)
- bunjii
- ベストアンサー率43% (3589/8249)
>一例として、まず日々の勤務時間(夜勤です)を仮に17:03~5:03として勤務時間セルに=(5:03のセル番号-17:03のセル番号)を入力して勤務時間が12:00で表示されます。 その計算では負数になります。 =5:00-17:00 → -.5 → -12:00 表示形式を時刻のH:MMにすると12:00になります。 時刻をシリアル値に直して計算し、その結果を時間として表記すると次のようになります。 但し、時間の表示形式は[H]:MMとします。 =5:35-17:06 → 0.23263889-0.7125 → -0.4798611 → -11:31 =5:04-17:01 → 0.21111111-0.70902778 → -0.49791667 → -11:57 従って、「勤務時間合計⇒ -23:28:00」は正しい結果になります。 A列へ出勤、B列へ退勤の時刻を入力するとした場合は次のように時間計算してください。 =B2-A2+(B2<=A2)
- imogasi
- ベストアンサー率27% (4737/17070)
エクセルの話ですが、エクセルと互換性を持たせるために、OpenOffice Calcでも仕組みは同じだと思います。(細かい点では反例があるかもしれませんが。) よく言う時間と言っているのは、意味的には「時刻」です。 日付時刻シリアル値という数値を用いて、日付と時刻を表していると思います。20世紀初頭を第1日として、1日後は+1して行き、時刻は24時間=1日として、0時から経過時間を小数点数で表します。 ですから、#1に言及されているように、会話では、言わない、シートでは見えない日付も、データとしては、(日をまたがったことを考えるときは、)セルに日付部分を入れないとなりません。 夜の零時を越えた時刻は、日付も入れて考えないと、(引き算においては)正しく計算されないはずです。 例 A1 B1 C1 D1 2016/5/17 17:06 2016/5/18 5:35 0.520138889 12:29:00 C1=B1-A1の結果 書式は数値 D1の書式は日付 日付も入れないと、上記からC1はマイナスの数値になる。 ーー https://enterprisezine.jp/iti/detail/690 を参照。 こういう演算式での工夫もあり得ます。 ーー しかし、日付部分を入力しないで、(時刻だけ入力して)入力段階から列ごとに(たとえば)B列は翌日扱いの設定などの仕組みは、エクセルにはないと思います。VBAなどを使わなければ。 ーー 数式バー部も本日のつもりでデータを入れても本日日付が出るわけではないが、本日扱いされます.翌日になってこのシートを開いても、そのセルは前日扱いになるわけでなく、当日 (日付を無視する)になると思います。A3セルに時刻を入れて、他空白セルに=DAY(A3)を入れると0です。 == 以上を読んでいただいて、データ入力設計や式設計を考え直してみてください。