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

A列の同一データ間で、B列で前後30日間に該当する日付を調べる

 

シリアル値で使われていない桁で、A列のデータを識別し、2つのデータをまとめたもので前後30日を判定します

日付の実体であるシリアル値は、「1900/1/0 0:00」を0とする数値です。シリアル値の1は1日に相当し、日付のシリアル値は、「1900/1/0 0:00」からの経過日数となります。

ですから、現在の日付は、5桁のシリアル値で表されます。

現状ではそれ以上の桁が使われていないので、A列の識別でそれを利用します。

具体的には、MATCH関数で、同一データの表われる最初の相対位置を調べます。それに10万を乗算し、6桁以上の数値にします。それと日付のシリアル値を加算して、30日前後の判定を行います。

同一データでなければ、10万単位で異なる数値となるので、もちろん30日前後に該当しません。同一データの場合のみ、6桁以上の数値が一致するので、単純に5桁以下の日付の比較となります。

 

 

 

 

@「名前」の重複があり、重複した「名前」の中で、30日前後に該当する日付の有無を調べます

A日付のシリアル値は、表示形式を「数値」に変えると確認できます

現在の日付は、5桁のシリアル値で表されます。

B新たに「識別番号」列を挿入し、MATCH関数で、重複した「名前」を数値で識別します

MATCH関数では、同じ「名前」が最初に現れる相対位置が返されるので、同じ「名前」には同じ数値が表示されます。

C10万を乗算して、6桁以上の数値にします

 

D「日付」のシリアル値を加算します

シリアル値は5桁なので、6桁以上で表される「名前」とは、お互いに干渉しません。

E適当な列に左のような数式を設定します

【参考】日数はシリアル値の減算で求める

作例では、不要な「シリアル値」列を削除して、その代わりに「判定」列を作りました。

「判定」列に表示されている数値は、「名前」が同じで、「日付」が30日前後に該当するデータの個数です。

FEの数式は、そのまま条件付き書式で使うことができます

0でない数値はTRUEとして扱われるので、重複データが強調表示されるようになります。

 

<< 日数はシリアル値の減算で求める 質問や要望などはこちらへ シリアル値の小数部で表される“時間”は、計算過程で誤差を生じやすい >>

 

関連する他のページ

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

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

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

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

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

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

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

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

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

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