前回の記事『データが示す!キャットフード変更で変わる猫のうんち周期』では、2匹の猫の排便記録から、それぞれの排便時間間隔を求めました。
その際、排便しない日があるとエクセルのワークシートに空白セルができてしまい、単純な減算式のコピー&ペーストでは対応できませんでした。
試行錯誤の末に、すべての時刻の時間差(経過時間)を効率的に自動計算する方法を見つけ、その方法でデータ分析を行いました。
今回は、その具体的な手順をあらためて詳しく紹介します。
我が家の2匹の猫が排便した時刻のデータがあります(図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なります。

次に、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になります。
STEP (5) 時間差の先頭データ
最初の時刻データには差分を求める対象がないため、セルD2とセルE2の入力内容を削除します。
STEP (5)を実行したワークシートは図4になります。
以上の手順を経て、空白セルを含むデータでも、すべての時刻の時間差が効率的に計算できるようになりました。
この方法で作成したデータを使って、前回のブログ記事に掲載したグラフ(図5)を作成しています。
この方法を応用することで、多くの分野で空白データや複雑な時間差を扱う計算を効率化できるでしょう。
IKINARI LARCをもっと見る
購読すると最新の投稿がメールで送信されます。



