Excelで空白セルを含む日付をまたぐ時刻の経過時間を計算する方法

投稿日:


我が家の2匹の猫が排便した時刻のデータがあります(図1)。

図1


・A列に年月日
・B列に猫1の排便時刻
・C列に猫2の排便時刻

時刻のセルが全て埋まっていれば、前回の排便から何時間後といった計算は簡単にできます。
しかし、B列とC列にランダムな空白セルがあるので、計算の仕方に工夫が必要になります。

そこで、以下の手順で計算をすすめます。

まず、空白行をスキップして最後に入力された時刻を参照するための、前回の入力を保持する補助列を作成します。

STEP (1) 前回のB列の入力を取得(F列)

1.セルF2に、次の式を入力します。

=IF(B2<>””, A2+B2, IF(ROW()=1, “”, F1))

  • B2<>"" : B列に値がある場合、その値を日時データとして取得
  • A2+B2 : 日付と時刻を加算(日時データに変換)
  • IF(ROW()=1, "", F1) : 空白の場合、上の行の値を引き継ぐ

2.セルF2をコピーして、F列全体にペーストします。

STEP (2) 前回のC列の入力を取得(G列)

1.セルG2に、次の式を入力します。

=IF(C2<>””, A2+C2, IF(ROW()=1, “”, G1))

  • C2<>"" : C列に値がある場合、その値を日時データとして取得
  • A2+C2 : 日付と時刻を加算(日時データに変換)
  • IF(ROW()=1, "", G1) : 空白の場合、上の行の値を引き継ぐ

2.セルG2をコピーして、G列全体にペーストします。

STEP (1)、STEP (2)を実行したワークシートは図2なります。

図2


次に、D列とE列で時間差を計算します。

STEP (3) B列同士の時間差(D列)

1.セルD2に、次の式を入力します。

=IF(B2<>””, ((A2+B2) – F1) * 24, “”)

  • A2+B2 : 現在の行のB列の日時データ
  • F1 : 前回のB列の入力日時データ
  • 日時データの差を時間単位に変換するために *24 を追加

2.セルD2をコピーして、以下D列全体にペーストします。

STEP (4) C列同士の時間差(E列)

1.セルE2に、次の式を入力します。

=IF(C2<>””, ((A2+C2) – G1) * 24, “”)

  • A2+C2 : 現在の行のC列の日時データ
  • G1 : 前回のC列の入力日時データ
  • 日時データの差を時間単位に変換するために *24 を追加

2.セルE2をコピーして、以下E列全体にペーストします。

STEP (3)、STEP (4)を実行したワークシートは図3になります。

図3

STEP (5) 時間差の先頭データ

最初の時刻データには差分を求める対象がないため、セルD2とセルE2の入力内容を削除します。

STEP (5)を実行したワークシートは図4になります。

図4


以上の手順を経て、空白セルを含むデータでも、すべての時刻の時間差が効率的に計算できるようになりました。
この方法で作成したデータを使って、前回のブログ記事に掲載したグラフ(図5)を作成しています。

図5


この方法を応用することで、多くの分野で空白データや複雑な時間差を扱う計算を効率化できるでしょう。


IKINARI LARCをもっと見る

購読すると最新の投稿がメールで送信されます。

コメントを残す