web-dev-qa-db-ja.com

Googleスプレッドシートで時間差を計算するにはどうすればよいですか?

次のようなGoogleスプレッドシートがあります。

 Date        | Start time  | End time    | Minutes
 ------------+-------------+-------------+-----------
 1/11/2012   | 11:39       | 12:41       | ?!
 ------------+-------------+-------------+-----------
             |             |             | 

今のところ、1日の2つの時間の間の分数を手動で入力すると。時間差を簡単に計算し、スプレッドシートで計算する方法はありますか?

73
Stefano Palazzo

GoogleはDurationと呼ばれる新しい数値形式を追加しました。開始フィールドと終了フィールドをFormat -> Number -> Timeに設定し、計算フィールドをFormat -> Number -> Durationに設定します

それが完了したら、フィールドを減算して、Stefano Palazzoの回答で指摘されているように、差を得ることができます。

65
Jacob Hulse

はい、時間フィールドが適切にフォーマットされている場合(フォーマット→数値→時間)をクリックすると、時間を加算および減算できます:

=C2-B2

または

21:58:00-20:44:00 = 1:14:00

これにより、HH:MM:SSとして時間差が得られます。また、分数を計算する場合は、そのフィールドでHour()Minute()、およびSecond()関数を使用できます。

=(Hour(D2) * 60) + Minute(D2) + (Second(D2) / 60)

もちろん、うるう秒、タイムゾーンの変更、またはイベントに24時間以上かかる場合は、結果を手動で調整する必要があります。

警告

1つのイベントが深夜0時を過ぎて、たとえば23:50から00:10まで続く場合、これは負の時間として表示されます!

これらのイベントを「正しく」処理するには、「24:10」を入力するか、イベントを2つに分割します。

より良い方法

データを入力するのは少し難しいですが、これを行う最も確実な方法は、ビニングおよび終了フィールドを「Date Time」として、デルタフィールドを「Hours」としてマークすることです。これは次のようになります。

Beginning          End                  Delta
8/1/2013 0:00:00   8/2/2013 12:30:00    36:30:00
50
Stefano Palazzo

D2に次の式を追加すると、分が自動的に計算されます。

=ARRAYFORMULA(IF(ISBLANK(B2:B)=FALSE,((C2:C-B2:B)*24*60),""))

説明した

10進形式による時間の差は日数で表されます。したがって、24に60を掛けると分が得られます

リマーク

前提条件が1つあります。列Dは「通常」にフォーマットする必要があります。

作成したサンプルファイルを参照してください:Delta Time

9

より堅牢なソリューションのために、カスタム関数を使用します。

1。カスタム関数の追加

スクリプトエディタの使用( https://developers.google.com/apps-script/execution_custom_functions の指示に従ってください)-書き込み:

function toEpoch (indate) {
  return indate.getTime();
}

2。式を追加

次に、セルに次のように書き込みます。

=(toEpoch(C2)-toEpoch(B2)) / 60*1000

エポックミリ秒の差を分に変換します。

7
sketchy

私は多くの実験を行ってきました。これは最も簡単な Googleスプレッドシートで時間差を計算する方法です。次のような数式を含むセルをフォーマットします。

Formula cell formatting

形式>数値>その他の形式>その他の日付と時刻の形式、「秒」と:を削除します。次に、h:mm am/pmのように、終了時刻と開始時刻のセルをフォーマットします。

Input time cell formatting

=abs(end time - start time)を使用します。これにより絶対値が得られるため、負の時間値はありません。

7
Natalie Kee

はるかに簡単:これを見てくださいB2:23:00 C2:1:37 D2:= C2-B2 +(B2> C2)

なぜ機能するのか、時間は1日のほんの一部であり、B1> C2の比較は、1日(24時間)が追加されるとTrue(1)またはFalse(0)を返します。 http://www.excelforum.com/Excel-general/471757-calculating-time-difference-over-midnight.html

5
Tom Elwood

時間差を日単位で測定したい場合は、使用します

=DAYS(end_date, start_date)
4
e18r

TIMEVALUE()も試してください。

上記の場合、解決策は次のとおりです。

(TIMEVALUE(End Time) - TIMEVALUE(Start Time))*24*60は、時差を分単位で示します。

3

Googleスプレッドシートでは、次の式を使用しました

=Round((hour(A2-A1)*60 + minute(A2-A1))/60,2)

小数時間の違いを教えてください。

1
Vibhu

私はこの式を使用します:

=HOUR(C2-B2)*60+MINUTE(C2-B2)

それから

Format -> Number -> More Formats -> Custom number format -> #,##0
0
Rahmat Ihsan