日付に基づく条件付き VLOOKUP

日付に基づく条件付き VLOOKUP

Excel で結合したいテーブルが 2 つあります。

日付 Eメール
2019-07-07 06:49:10 メール1
2019-07-14 20:21:16 メール2
2019-06-23 18:22:40 メール3
2019-08-11 13:17:54 メール4

そして

日付 Eメール 記事番号
2019年2月4日 15:11 メール1 1位
2019/08/08 20:21 メール1 5番
2019年5月6日 16:30 メール2 1位
2019年7月9日 13:00 メール2 2位
2019年8月9日 12:43 メール2 3位
2019年5月5日 18:13 メール3 7番
2019/06/28 09:00 メール4 6番

これらのテーブルを電子メールでマージしたい。「mail3」と「mail4」の場合、これはかなり簡単で、7番と6番を取得します。しかし、「mail1」と「mail2」の場合は、これはより困難です。日付を比較してマージし、最も近い日付に関連する記事番号を取得しますが、前に表 1 の日付。通常の VLOOKUP を使用して電子メールを結合しようとしましたが、条件付きでこれを行うことが可能かどうかはわかりません。詳細情報が必要な場合はお知らせください。ありがとうございます。

答え1

INDEXと をとMATCH一緒に選択すべきだと思いますAGGREGATE。この組み合わせは常に、少なくとも と同等の速度でVLOOKUP、最高ではるかに高速です。

以下に例を示します。

ここに画像の説明を入力してください

C2:

=INDEX($G$2:$G$8,MATCH(AGGREGATE(14,3,($F$2:$F$8=B2)*($E$2:$E$8<A2)*($E$2:$E$8),1),$E$2:$E$8,0))

下にドラッグ...


@Rajesh の以下の懸念に答えると、参照を適宜更新する限り、行 1、100、1000、100000 のどの行でも機能します。問題ありません。実際の日付値とTRIMOP が提供したサンプル データを使用することを忘れないでください。

ここに画像の説明を入力してください

C182:

=INDEX($G$182:$G$188,MATCH(AGGREGATE(14,3,($F$182:$F$188=B182)*($E$182:$E$188<A182)*($E$182:$E$188),1),$E$182:$E$188,0))

答え2

この単純な配列 (CSE) 数式は、日付に最も近い一致を見つけて問題を修正します。

ここに画像の説明を入力してください

Q2 で編集された数式:

{=IF(ISBLANK(O2),"",IFERROR(INDEX($U$2:$U$9,MATCH(1,(P2=$T$2:$T$9)*(O2>=S$2:S$9),1)),""))}
  • 式を次のように完成させるCtrl+Shift+Enterそしてそれを埋めてください。

注意

  • クローゼットのマッチは裁量の問題であり、Greater/Less than or Equals to the Criteria Date.

  • したがって、式のこの部分の比較演算子は、それに応じて変更される可能性があります(O2>=S$2:S$9)

必要に応じて数式内のセル参照を調整します。

関連情報