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


73

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

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

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

回答:


65

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

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


51

はい、時間フィールドが適切にフォーマットされている場合([ フォーマット]→ [ 数値 ] [ 時間 ]をクリック)、時間を加算または減算するだけです。

=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

これはもう機能しないようです。[フォーマット]> [数値]> [時間(対時間)]を選択する必要があると思います。単純な1時間ごとの差を減算しようとすると、非常に奇数の10進数が表示されます。
イライジャリン

@ElijahLynnこの奇数は日数です。24と60を掛けると分数が得られます
ジェイコブヤントゥインストラ

1
誰かが1つのセルの日付と時刻を取得したい場合、追加するだけでマージできます:A1 + B1。
wzbozon

9

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

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

説明した

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

リマーク

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

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


7

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

1.カスタム関数を追加する

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

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

2.数式を追加する

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

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

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


...私はこれを行って、それを変換し、すでに秒に変換することを確認しました(ミリ秒から): function toEpoch (data) { return new Date(data) / 1000; }
user1278519

7

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

数式セルの書式設定

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

入力時間セルのフォーマット

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



4

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

=DAYS(end_date, start_date)

それは本当だ。しかし、数日で違いを見つけようとしてここに来ました(そして、後で他の場所で見つけたときに答えを返すために戻ってきました)。これは関連するトピックなので、特にタイトルに測定単位が指定されていないため、新しい質問を開く価値はないと思いました。しかし、それは私の推論に過ぎません。どう思いますか?
e18r

@pnuts有用であるが質問の範囲外である回答を見つけた場合は、質問を編集することもできます(この場合は、分、時間、日などを言います)。私はたった一人の男です。質問には100,000回の視聴があります。
ステファノパラッツォ

3

あなたも試してみてくださいTIMEVALUE()

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

(TIMEVALUE(End Time) - TIMEVALUE(Start Time))*24*60 MINUTES単位で時差が表示されます。


ようこそスジース!良い答えは、読みやすくするためにいくつかの書式を追加したことです。
ヴィダールS.ラムダル

1

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

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

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


0

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

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

それから

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

-1

=(C2-B1)*1440 次に、フォーマットを「プレーンテキスト」に設定します。


-1

私の個人的なアプリケーションの場合:

StartTime (columnA)| EndTime(Column B)| Date (Column C)

これは私のために働いた:
=if(B4-A4<0,(B4+C4+1)-(A4+C4),B4-A4);Format \ Time \ Durationとしてセルをフォーマットする。

真の条件:ステファノパラッツォのコメントに触発された式。


psの日付は、StopTimeが翌日にロールオーバーされた場合でもStartTimeに関連付けられているため、EndTimeの日付に+1を追加しました。EndTimeが1日以上ロールオーバーすると、+ 1は明らかに機能しなくなります。
ボブK

-2

時間差は日数で表されるので、分に戻るには、差に1440(24 x 60)を掛ける必要があることに同意します。

今日、この問題が発生したため、Googleドキュメントのスプレッドシートで現在の時刻を取得する別の簡単な方法はCONTROL:、セルに入力することです。これは、開始時間と終了時間の両方のセルに使用できます。

セルに現在の日付を入力する必要がある場合、これは CONTROL;


1
共有していただきありがとうございますが、それは質問に対する答えではありません。もっと読むツアーを私たちの中にいることヘルプセンター。Webアプリケーションへようこそ!!
ジェイコブヤントゥインストラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.