目次
Excelで時間の引き算や、時間、日付、またマイナスの時差を計算する方法を紹介します。
2つの時刻の時間差を求める場合は、別の時刻から時刻を引くと便利です。例えば、ある作業を完了するのにかかった時間を知りたい場合、作業の開始時刻と終了時刻の両方を入力し、それらを差し引くことで総経過時間を求めることができます。
Excelは日付や時刻を数値として記憶しているので、単純な算術式やTIME関数、TEXT関数、TIMEVALUE関数などを使って簡単に引き算を行い、時間差や経過時間などを計算することができます。今回は、Excelで時間の引き算や日時の差分を計算する方法をいくつか紹介します。
2つの時刻の差を計算する
与えられた2つの時刻の時間差を計算して経過時間を求めることが多くなっています。2つの時間または2つのセルの間の時間を、簡単な引き算で計算することができます。
時差を求める最も簡単な方法は、「終了時刻」から「開始時刻」を引くことです。
=終了時刻 – 開始時刻
例えば、B3の時間からA3の時間を引くには、以下の計算式が使えます。
=B3-A3
ここで、A3はStart Time、B3はEnd Timeです。見ての通り、A3とB3には5時間の差があります。
しかし、結果セルの形式が「一般」に設定されている場合、結果は分数/小数で表示されることになります。これは、Excelでは時間の値が分数で表現されるからです。
Excelの日付システムでは、時刻はこのように保存されます。
エクセルの社内システムで
- 00:00:00 AM は 0.0 として保存されます。
- 午前06:00は0.25として保存されます
- 12:00 PM は 0.5 として格納されます。
- 18:00 PMは0.75として格納されます。
- 23:59:59 は 0.99999 として格納されます。
セルに日付と時刻を入力すると、整数と小数からなる通し番号として保存されます。整数が日/日付を表すのに対して、小数点以下の数字は時間を表します。例えば、エクセルのセルに「2001年8月15日6時00分00秒」と入力すると、「37118.25」として格納される。
そのため、5時間は以下のように「0.208333333」と表示されます。
時間」で小数を表示するには、出力セルを選択します。次に、「数値」グループから「数値の書式」ドロップダウンメニューをクリックし、「時間」オプションを選択します。
カスタム時間フォーマットを適用するには、リボン上の数値グループの隅にある矢印ボタン(数値フォーマット)をクリックするか、Ctrl 1を押して「セルの書式設定」ダイアログボックスを開きます。
数値」タブで「時間」タブを開き、時間形式を1つ選択して「OK」をクリックします。
または、「カスタム」タブで以下のコードのいずれかを入力し、「OK」をクリックすると、それぞれの時間フォーマットが適用されます。
h | 時差を時間単位で表示する。例)5 |
h:mm | 時差を時・分単位で表示する。例:5:30 |
h:mm:ss | 時差を時・分・秒単位で表示する。例:5:30:10 |
d h:mm:ss | 時差を日、時、分、秒単位で表示する。例:2 5:30:10 |
出力が##エラーになる場合は、出力セルの幅が十分でないか、結果が負の数であることを意味します。結果が負の数である場合、次のいずれかのセクションでExcelで負の時間を処理する方法について見ていきます。
2つの時刻の間の時間、分、秒を数える
個々の時間単位(時、分、秒)で時間差だけを計算したいことがあります。時間の引き算をするとき、Excelは常に小数点を返します。結果の値では、すべての整数が1日を表し、小数は時間、分、または秒に変換することができます。そのためには、次の数式を使います。
2つの時刻の間の時間を求める
2つの時刻の差を時間で計算するには、次の式を使用します。
=(終了時刻-開始時刻) * 24
例
=(B3-A3) * 24
ここで、開始時刻はA3、終了時刻はB3です。B3-A3を引いて2つの時刻の差を計算し、それに24(1日の時間数)をかければいいのです。この結果、10.17が得られます。
INT関数を使って、完全な時間数を得ることができます。
=INT((b3-a3) * 24)
INT関数は、結果を切り上げて整数にします。
2 つの時刻の間の総分数を求める
2つの時刻の差を分単位で計算するには、次の式を使用します。
=(終了時刻-開始時刻) * 1440
または
=(終了時刻-開始時刻) * 24 * 60
例
=(B3-A3) * 1440
ここで、開始時刻はA3、終了時刻はB3である。B3-A3の単純な引き算で2つの時刻の差を求め、それに1日の分数である1440をかければいいのです。最終的な出力は、A3とB3の間の合計分数である610になります。
2 つの時刻の間の合計秒数を求める
この式を使って、2つの時刻の差を秒単位で求めます。
=(終了時刻-開始時刻) * 86400
または
=(終了時刻-開始時刻) * 24 * 60 * 60
例
=(B3-A3) * 86400
ここで、開始時刻はA3、終了時刻はB3である。B3-A3の単純な引き算で2つの時刻の差を求め、それに1日の秒数である86400をかければいいのです。最終的な出力は、A3とB3の間の合計秒数である36600となります。
Now () 関数を使用して開始時刻から現在までの経過時間を計算する
ExcelでNOW関数を使用すると、コンピュータの現在の日付と時刻が表示されます。開始時刻から現在までの経過時間、つまり現在時刻を求める場合は、数式中の終了時刻の代わりにNow()関数を使用します。
ここでは、経過時間を求めるための計算式を紹介します。
=現在-開始時刻
下の例では、A列に開始時刻があります。与えられた開始時刻から現在までの経過時間を計算するには、以下の数式を使用します。
=NOW()-A1
開始時刻に日付がなく時間だけが表示されている場合、この数式は以下のように間違った結果を返すことがあります。これは、Excelがデフォルトで日付を1990年1月1日とみなすからです。
これを解決するには、開始時刻に日付部分を追加するか、NOW()関数が返す日値をトリミングするINT()関数を使用します。
まず、セルに開始日と時刻を入力し、次に同じ数式を入力します。C列(結果列)には、必ずh:mmという適切な時間形式を適用してください。
経過時間が24時間を超える場合、結果に時間だけでなく日数も表示するために、時間フォーマットを適用する必要があります。日数を含めるには、以下のいずれかの書式を使用します。
形式 | 例 |
d h:mm:ss | 1 15:57:29 |
d "日" h:mm:ss | 1日 15:57:29 |
d "日" h "時間" m "分," s "秒" | 1 日 15 時間 57 分 29 秒 |
以下の例では、C列にd \"day" h:mm:ss形式を適用しています。このように、開始時刻(2022/7/29)から現在までの経過時間は、1日15時間57分29秒です。
指定された時刻の時差を計算する
TIMEVALUE()関数を使用すると、指定した2つの時刻の時差を直接計算することができます。TIMEVALUE関数を使えば、開始時刻と終了時刻を2つのセルに入力する必要がなく、数式に直接値を渡すことができます。
シンタックスです。
=TIMEVALUE(\"Start Time") – TIMEVALUE(\"End Time")
例えば、6:10と3:00の時差を計算する場合は、以下の式を使用します。
=timevalue(\"6:10pm")-timevalue(\"3:00pm")
1 つの時間単位で差を計算する
HOUR()、MINUTE()、SECOND()関数を使用すると、2つの時刻の時差を、他の単位を無視して1つの単位だけで計算することができます。
分と秒を無視して時差を計算するには、次のサンプル式を使用します。
=HOUR(A2-B2)
分と秒を無視して時差を分単位で計算するには、次のサンプル式を使用します。
=MINUTE(A2-B2)
分と秒を無視して時間差を秒単位で計算するには、次のサンプル式を使用します。
=SECOND(A2-B2)
ただし、終了時刻が開始時刻より小さい場合は、結果が負数になります。したがって、結果としてNUM!エラーが発生します。
HOUR()関数の結果が24時間を終了していないこと、MINUTE()関数とSECOND()関数の結果がそれぞれ60分と60秒を終了していないことを確認してください。
テキスト関数で時間を引いて時差を求める
セルの書式を変更したくない場合は、TEXT関数を使って時差を計算し、テキスト文字列として出力することができます。TEXT関数を使えば、セルに書式を適用する必要がなく、数式の中ですぐに出力の書式を指定することができます。
時差を計算するための構文です。
=終了時刻 – 開始時刻,format")
2つの時刻の間の時差(時間
2つの時刻の間の経過時間だけを取得する場合。
=TEXT(B2-A2,\"hh")
上記で、hhは時間単位を表しています。このように、A2からB2の時間を引き、開始時刻と終了時刻の経過時間数のみを出力する計算式です。
2つの時刻の間の時間差(分
2つの時刻の間に経過した分だけを求めるには、次の式を試してみてください。
=TEXT(B2-A2,\"[mm]\")
ここで、[mm]は総分数を表します。このように、A2からB2の時間を引いて、2つの時間の経過分数だけを出力する式です。
2つの時刻間の時間差(秒
2つの時刻の間の経過秒数だけを求めるには、次の式を使用します。
=TEXT(B2-A2,\"[ss]\")
ここで、[ss]は合計秒数を表します。この式は、開始時刻から終了時刻を引いて、合計秒数のみを返す。
mm’ と ‘ss’ のフォーマットが角括弧で囲まれていることにお気づきでしょう。それは、時間以外の残りの分または秒ではなく、2 つの時刻の間の分または秒の合計を取得したいからです。ただし、時間数が24時間を超える場合は、数式に'[hh]’(角括弧で囲む)形式を使用することができます。
時間以外の2つの時刻の間の残り時間を求めるには、代わりに以下の式を使用します。
=TEXT(B2-A2,\"mm")
時間以外の2つの時刻の残り秒数を求めるには、次の式を代わりに使用します。
=TEXT(B2-A2,\"ss")
2つの時刻の間の時・分・秒をすべて返すには、次の式を使用します。
=TEXT(B2-A2,\"hh:mm:ss\")
注意:TEXT関数が返す結果は常にTEXTです。従って、その出力は他の計算には使えません。もし、計算された時間を他の計算で使用する場合は、他の方法で時差を計算し てください。
TEXT関数の戻り値が負の数だった場合、#VALUE!エラーが発生します。
2つの日付の時差を計算する
その前に、Excelはデータと時間を通し番号で保存していることを知っておいてください。Excelのセルに「日付」を入力すると通し番号が、「時間」を入力すると端数が割り当てられます。
Excelは、1900年1月1日から今日までの日付が連番で表示されるようになっています。つまり、1900年1月1日が1、1900年2月が2、1900年3月が3、といった具合になります。例えば、2022年8月1日の日付の通し番号は44774で、午前6時の分数または10進数は0.25(4分の1日)です。
ただし、Mac版Excelの一部の初期バージョンでは、1904年の日付システムを使用しています。また、1904年の日付システムを有効にするオプションもあります。その場合、通し番号は1904年1月1日(0)から始まります。そして、1904年1月2日は2、1904年1月3日、といった具合になります。
2 つの日付の間の時差を時間で計算する
2つの日付と時刻の時差を計算するには、以下の式を使用します。
=INT((B2 – A2) * 24) &.\Ȃ 時間
ここで、B2 は終了日、A2 は開始日です。式(B2-A2)は、分数を生成します。時間差を得るには、分数の日数を足す必要があります。
この式の仕組みを見てみましょう。
ご覧のように、2つの日付の合計差(出力セルに「d h:mm:ss」時間フォーマットを適用した場合)は2日、5時間、59分、40秒となります。
このカスタム書式 ‘d h:mm:ss’ は、「セルの書式設定」ダイアログボックスで適用することができます。
Excelは日数で計算し、日付の間に2日の差、すなわち48時間があることを示します。つまり、5時間59分40秒の差があります。さて、これを出力に追加する必要があります。
そのためには、5時間59分40秒を日数で換算する必要があります。私たちの時間は秒数で終わるので、以下のように5時間59分40秒を秒数で計算することにします。
- 5時間×60分×60秒=18,000秒
- 59分×60秒=3,540秒
- 40秒
- 5時間59分40秒=18,000秒 3,540秒 40秒=21,580秒。
1日の小数を計算するには、上記の合計21,580秒を86,400秒(=1日の総秒数)で割る必要があります。
- 21,580 / 86,400 = 0.249769日
その結果、得られる端数は0.249769日となります。
さて、2つの日付の最終的な差は、2日0.249769=2.2497685となります。
あるいは。
- Start DateTime (8/1/2022 2:15:50 PM) のシリアルナンバーは 44774.59433 です。
- 終了日時(8/3/2022 20:15:30)のシリアルナンバーは44776.8441です。
- 終了日時(B2)-開始日時(A2)= 44774.59433 – 44776.8441 = 2.2497685.
上記の出力を時間に変換するには、24を掛けます。
- 2.2497685 * 24 = 53.994444時間です。
最後にINT関数で最後の小数を切り捨て、「&」演算子で最後にテキスト文字列(時間)を追加すると、2日間の合計時間が「53時間」となります。
2 つの日付間の時差を分単位で計算する
2つの日付の時差を分単位で計算する方法は、時間の計算と似ていますが、唯一の違いは、計算式で時差に1440(1日あたりの分数)を掛ける必要があることです。そして、「時間」の代わりに「分」の文字列を最後に追加します。
2つの日付の時差を分単位で計算すること。
=INT((B2 – A2) * 1440) & "分"
ここで、B2 は EndDate、A2 は StartDate である。上記の式では、2つの日付の間の減算出力時間差に1440(1日の分数)を掛けています。そして、その結果に文字列「分」が付加される。
2つの日付の時差を秒単位で計算する
秒の計算は、時間や分の計算と同じですが、引き算の出力に86400(1日の秒数)をかけるという点だけが異なります。
そのためには、以下の計算式が使えます。
=INT((B2 – A2) * 86400) & " 秒 "
この式では、A2からB2のDatetimeを引き、その結果に86400(1日の秒数)を掛けています。これは、結果を秒単位で表示したいからです。これにより、結果としては194379が得られます。小数点以下の値がないので、INT関数は同じ出力(2つの日付の間の合計秒数)を返します。
2つの日付の間の日・時・分・秒をすべて計算する
2つの日付間の時差を日、時間、分、秒の単位で取得したい場合、TEXT関数とINT関数を併用する必要があります。
2つの日付の間の日、時間、分、秒を計算するには、以下の式を試してみてください。
=INT(B2-A2) & です。\日数, ⅫTEXT(B2-A2,\"h"╱︎╱︎╱︎╱︎╱︎╱︎╱︎)
ここでは、数式の最初の部分は、前の例と同じように動作します。INT 関数は、与えられた日付 (2.2497685) を 2 日分引いた整数値を返します。
式の後半では、TEXT 関数で両方の日付を引き、その結果 (5:59:40 AM) に独自の数値書式を適用しています。このとき、 \"h" は時間数、"m" は分数、"s" は秒数を返します。また、TEXT 関数は、時間単位ごとに時、分、秒の文字列をダブルクオートで囲んで追加します。
最後に、INT関数とTEXT関数の出力を連結演算子(&)演算子で結合すると、2日と5時間と59分と40秒という結果になります。
お気づきのように、数式内のすべての文字列の後にスペースを追加しています。結果がごちゃごちゃにならないように、このスペースは必ず入れてください。
また、INT機能でHOUR、MINUTE、SECONDの各機能を個別に使用することでも、同様の結果を得ることができます。
=INT(B2-A2) & です。\日数, {b} 時間(B2-A2) {b}.\B2-A2) & HOUR(B2-A2) & Ⓐ時MINUTE(B2-A2) &。\分、秒(B2-A2) &。秒(B2-A2) & (B2-A2)&。\秒"
特定の時間から時間、分、秒を差し引く
特定の時間や日付から特定の時間間隔(時間、分、秒)を差し引きたい場合があります。これは、ExcelのTIME関数を使っても使わなくても実現できます。引き算したい時間が23時間以下であれば、TIME式を使うことができます。しかし、任意の時間数を引き算するために使用できる別の数式があります。
TIME機能なしで時間から任意の時間を引く
例えば、特定の日付の時刻があり、その時刻の何時間前かを計算したい場合、引き算したい時間を総時間数(1日あたり)で割って、その結果を与えられた時刻から引き算することができます。
=与えられた時間/日付の時刻 – (減算される時間/24)
例
=A2 – (18 / 24)
計算式はこうだ。
Excelは日数で差を計算するので、与えられた日付や時間から引き算したい日数(または端数)をExcelに与える必要があります(A2)。
日数を計算するには、引き算したい時間を24(1日の総時間数)-18/24で割る必要があります。これで0.75になります。24時間以上引きたい場合は、小数点の前の数値が日数、小数点の後の数値が時間を表します。
ここで、Excelは分数と小数で考えるので、8/1/2022 2:15:50 PM(A2)のシリアル番号である(44774.59433)から0.75を差し引きます。
これは、「7/31/22 8:15 PM」のシリアル番号である44773.84433を返します。したがって、出力は7/31/22 8:15 PMとなります。
例2.
2022年8月1日18:00から42時間さかのぼりたい場合を考えてみましょう。そこで、与えられた時間から引き算したい日数をExcelに与える必要があります。
時間を日に換算するには、42を24で割って、A2から引く必要があります。
=A2-(42/24)
42を24で割ると、1.75日となります。先ほど述べたように、小数の前の数字は日数(1)、小数の後の分数は時間(0.75)を表しています。
0.75に24を掛けると(0.75*24)、18時間になります。そこで、ExcelはA2(2022年8月1日午後6時)から1日18時間を引きます。最終的な出力は、7/30/22 8:15 PMです。
上記の単純計算式は、与えられた時間から何時間でも使えますが、引き算する時間が23時間以下の場合は、TIMEの計算式を使うことができます。
TIME機能で時間から時間を引く
TIME機能は、1つの時間値を個々の時、分、秒の単位に変換することができます。また、個々の時間単位を1つの時間値に統合することも可能です。ただし、TIME機能で扱えるのは、最大23時間59分59秒までです。
構文です。
= 与えられた時間/日付時刻 – TIME(減算される時間, 0, 0)
例
2022年8月15日の夕方(午後6時)から18時間時間をさかのぼるには、次のTIMEの計算式を使います。
=a2 – 時間 (18, 0, 0)
TIME関数は、時、分、秒の3つの引数を持っています。18時間を引き算したいので、最初の引数は「18」、残りの2つの引数、分と秒は「0」で指定します。
通常、TIME関数は0(午前0時00分00秒または12時00分00秒)から0.99988426(午後11時59分59秒)までの間の出力を返します。上の式では、A2から差し引いた0.75を返します。
DateTimeから分を引く
分数の引き算は上記の式と同じで、引き算する分数を1440で割る必要がある点だけが異なります。
= A2 – (4500/1440)
上の式では、引き算したい分数(4500)を1日の総分数(1440)で割って、分数を日数に変換しています。除算すると3.125日となり、これをA2から引くと、「7/29/22 3:00PM」という出力が得られます。
TIME機能による特定時刻からの分単位の引き算について
TIME機能には制限があるため、引き算する時間が1439以下であれば、TIME機能を使って特定の時間から分を引き算することも可能です。合計1439分となる23時間59分59秒までしか扱えません。1439分以上引き算したい場合は、上記の演算式が必要です。
TIME機能を使って、与えられた時間から900分を差し引くこと。
=A2 – TIME(0,900,0)
上の式では、引き算したい分(900)をTIME関数の第2引数で指定しています。これにより、2022年8月01日午前3時00分となります。
日付時刻から秒を引く
秒の引き算は上の式と同じで、括弧内の分母が86400であることだけが違います。
構文です。
= A2 – (引き算する秒数 / 86400)
上の式では、引き算したい秒数(10000)を1日の総秒数(24時間×60分×60秒=86400)で割って秒数を日数に変換しています。除算すると0.115740741日となり、これをA2から引くと「8/1/22 3:13PM」となります。
TIME機能による特定時刻からの秒の引き算
繰り返しになりますが、TIME機能には制限があるため、引き算する時間が86399以下であれば、TIME機能を使って特定の時間から秒を引き算することも可能です。23時間59分59秒、つまり合計86399分までしか扱えません。86399秒以上引き算したい場合は、上記の演算式を使用する必要があります。
TIME機能を使って、与えられた時間から9000秒を引くこと。
=a2 – タイム(0,9000,0)
上の式では、引き算したい秒数(9000)は、TIME関数の第2引数に指定します。これにより、2022年8月1日15時30分となります。
TIME機能を使って、特定の時刻から時・分・秒を差し引く
ある日付の時間から時・分・秒を引き算したいときは、TIME機能を使うと便利です。
例えば、2時間15分30秒を引くには、以下の式を試してみてください。
=A2 – 時間(2,15,30)
上の式では、TIME関数の引数に時間、分、秒の3つの時間単位をすべて指定しています。そこで、この式では、A2(8/1/22 18:00:00)から2時間15分30秒を引きます。これで、8/1/22 3:44PMが得られます。
エクセルで負の時間を計算する
時間の引き算をするとき、終了時刻が開始時刻より小さいと、時間差にマイナスの数値が発生します。この計算式は、時間差が0より小さい場合、負の数値になります。これは、通常、日付のないスプレッドシートに時間だけを入力した場合に起こります。
また、普段夜勤で仕事をしている人は、仕事の開始日時より終了日時の方が必ず早くなります。例えば、午後6時に仕事を始めて、翌朝6時に仕事を終えてログアウトする場合、通常の減算方式ではうまくいきません。
下図のように、数式が表示されないだけでなく、マイナスの時間があると、Excelは####エラーを投げます。
しかし、とにかくマイナスを表示したいのであれば、1904年の日付システムに切り替えればいいのです。最近のExcelのほとんどのバージョンは、デフォルトで1900年日付系になっていますが、日付系を1900年に変更すれば、マイナスの時間値を表示することができるのです。
ここでは、MS Excelで1904年の日付システムに切り替える方法を説明します。
これを行うには、Excelウィンドウで「ファイル」メニューをクリックし、バックステージビューで「オプション」を選択します。
Excelのオプションウィンドウで、左側の「詳細設定」タブを開き、「このワークブックの計算時」の項目まで下にスクロールします。そして、「1904年の日付システムを使用する」にチェックを入れ、「OK」をクリックします。
これで、Excelは以下のようにマイナスの日付と時刻の値を表示するようになります。
時間を負の値で表示したい場合は、IF機能を使って強制的に負の時間を正しく表示させることができます。
以下のいずれかの数式を使用すると、時刻が真夜中をまたぐときに負の時刻を適切に表示することができます。
=IF((B3-A3)<0,1-(A3-B3),(B3-A3))
または
=IF(B3>A3,B3-A3,1-A3 B3)
上記の計算式は、以下のように負の時差を計算し、正しく表示します。
しかし、ほとんどの場合、上記の計算式は機能します。時差が24時間以上ある場合は、上記の計算式も使えません。そのような場合は、必ず時刻と一緒に日付も入れてください。
日付の引き算で間の日数を数える
時刻と同様に、日付のある2つのセルを引き算して、2つの日付の間の日数を求めることもできます。
たとえば、セルA3とB3には2つの日付が含まれています。日数の差を求めるには、以下の数式を使用します。
=B3-A3
この式は、2つの日付A3とB3の差を132日として返す。
DAYS関数で2つの日付の間の日数を数える
単純なセルの引き算の他に、DAYS関数を使って2つの日付の差を計算することができます。
構文
=DAYS(終了日, 開始日)
例
=DAYS(B3,A3)
ここで、B3は終了日、A3は開始日である。
これで終わりです。これで、Excelでの時間の減算について知っておく必要があることはすべて知っていただき、さらにその上も知っていただきました。これらの関数を知ることで、Excelでの生産性が向上することを願っています。