
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 のどの行でも機能します。問題ありません。実際の日付値とTRIM
OP が提供したサンプル データを使用することを忘れないでください。
式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)
。
必要に応じて数式内のセル参照を調整します。