我一直试图检索以下工作表 (sheet1) 中的行,其中日期与 sheet2 中的日期匹配,但不重复 Sheet1 (列 B) 中的 ID
工作表1
工作表2
换句话说,我想检查 Sheet2 中的任一日期是否存在于 Sheet1 中,以查找 B 列中的 ID,并获取 Sheet1 中 Sheet2 中选定的两个日期中日期较近的行。以下是我想要的输出示例:
示例输出
到目前为止,我收到了重复的 ID:两个日期各一个。
(它必须是一个公式,因为这将是动态的,其中将在表 2 中选择不同的日期)
这是我目前的公式:
=IFERROR(INDEX(Sheet1!$A$2:$C$11, LARGE(IF(((Sheet1!$C$2:$C$11=Sheet2!$C$2)+(Sheet1!$C$2:$C$11=Sheet2!$C$3)>0),
MATCH(ROW(Sheet1!$B$2:$B$11), ROW(Sheet1!$B$2:$B$11)), “”), ROW(Sheet1!C1)), COLUMN(Sheet1!A1)),
“”)
这是我得到的输出。请注意红色的重复 ID。我只想要绿色的日期较近的行。
我并不反对辅助列,但是 Sheet1 中的数据也可能会发生变化,并且我不希望我的输出有任何空白。
我对此很陌生,所以任何建议都非常感谢!拜托!我已经做这件事好几天了。
以下是 Excel 表的图片:
答案1
我的建议:
=LET(s, SORT(FILTER(Sheet1!$A$2:$C$11, (Sheet1!$C$2:$C$11=Sheet2!$C$2)+(Sheet1!$C$2:$C$11=Sheet2!$C$3)),3,-1),
w, CHOOSECOLS(s,2), SORT(UNIQUE(CHOOSEROWS(s, MATCH(w,w,0))),2))
答案2
如果您拥有最新版本的 Excel,则可以使用以下公式:
=LET(d_1,MIN(F2:F3),d_2,MAX(F2:F3),ID_2,FILTER(B2:B11,C2:C11=d_2),ID_1,FILTER(B2:B11,(C2:C11=d_1)*(IFERROR(MATCH(B2:B11,ID_2,0)=0,TRUE))),t_1,FILTER(A2:C11,(IFERROR(MATCH(B2:B11,ID_1,0),FALSE))*(C2:C11=d_1)),t_2,FILTER(A2:C11,C2:C11=d_2),VSTACK(t_1,t_2))
=LET(
d_1,MIN(F2:F3),
- 较早的日期d_2,MAX(F2:F3),
- 稍后日期ID_2,FILTER(B2:B11,C2:C11=d_2),
- 身份证件显示日期较晚ID_1,FILTER(B2:B11,(C2:C11=d_1)*(IFERROR(MATCH(B2:B11,ID_2,0)=0,TRUE))),
- 仅限较早日期的身份证t_1,FILTER(A2:C11,(IFERROR(MATCH(B2:B11,ID_1,0),FALSE))*(C2:C11=d_1)),
- ID_1 的记录t_2,FILTER(A2:C11,C2:C11=d_2),
- ID_2 的记录VSTACK(t_1,t_2)
- 合并结果
)