エクセル実践塾 > 特集「条件式の考え方」

前後1時間で重複するスケジュールをチェックする

 

すべての日付+時刻と減算を行い、その差が1時間以内になるものを数えます

日付はシリアル値の整数部で、時刻は小数部で表されるので、両者を加算(足し算)すれば、そのまま両者を表すシリアル値となります。

これを減算に用いれば、ABS関数による絶対値で1時間以内であるかどうかを調べることができます。

これに該当する日時の数が2以上となるものが、前後1時間で重複したスケジュールということになります。すべての日時と比較するので、少なくとも自身が該当するため、1つの該当は「-1」して除外します。

なお、3つ以上該当した場合には、結果は2以上となりますが、0でない数値はTRUEとみなされるので、条件付き書式での使用には問題ありません。

 

 

 

 

ワークシートには、次のような条件式が入力されています。

=SUMPRODUCT((ABS($A2+$B2-($A$2:$A$30+$B$2:$B$30))<=TIME(1,10,))*1)-1

A列(日付)とB列(時刻)を加算したものから、すべての日付+時刻を減算し、その差が1時間10分以内となるものを数えます。最後に「-1」としているのは、少なくとも自身が該当するため、それを差し引いています。

@ワークシートで動作を確認した条件式を、数式欄で選択します

長くなる条件式は、あらかじめワークシートでテストしたものを「コピー&貼付け」する方法がオススメです。

A選択した条件式を右クリックして、「コピー」を選びます

B条件付き書式を適用するセル範囲を選択します

 

C「ホーム」タブから「条件付き書式」→「新しいルール」を選びます

D「数式を使用して、書式設定するセルを決定」を選び、数式欄内を右クリックして、「貼り付け」を選びます

 

E適当な「書式」を設定します

 

 

F貼り付けられる条件式では、それぞれの行で日付と時刻が加算され、同じ列のすべての日付+時刻と比較されます

G「OK」ボタンをクリックすると、前後1時間で重複したスケジュールが強調されます

 

<< シリアル値の小数部で表される“時間”は、計算過程で誤差を生じやすい 質問や要望などはこちらへ 文字列の有無は検索関数で、重複は対象部分を抜き出して比較 >>

 

関連する他のページ

曜日でデータをまとめたい
WEEKDAY関数の結果を並べ変えれば、曜日ごとに集計することもできます

スケジュール表の土日を塗りつぶしたい
日付や曜日がシリアル値(日時データ)で入力されていれば、WEEKDAY関数を使った条件付き書式で、土日だけを強調できます

日付の曜日を数値で表したい
WEEKDAY関数を使うと、各曜日を数値で表すことができます

条件付き書式を使って、土曜日と日曜日、祝祭日を色分けする
条件付き書式のルールは、複数設定して適用できます

ピボットテーブルを使って、曜日でデータを分析したい
WEEKDAY関数の結果をピボットテーブルでページフィルタにすれば、曜日でデータを分析できます

WEEKDAY関数を使ってみたい
WEEKDAY関数を使うと、指定した日付の曜日を1〜7の数値で表せます

日付から曜日データを取得したい
WEEKDAY関数を使えば、日付データから、曜日を表す数値データを取得できます

条件付き書式を使って、 日曜日の列だけを塗りつぶす
WEEKDAY関数による条件式を使えば、日曜日のセル範囲だけを塗りつぶせます

月〜金曜日の売上だけを合計したい
WEEKDAY関数による結果を条件とすれば、SUMIF関数で曜日を限定して売上を合計できます

月〜金曜日の売上の平均を求めたい
WEEKDAY関数による結果を条件として、SUMIF関数での集計結果を、COUNTIF関数で調べた個数で割れば、曜日を限定して平均を求めることができます