You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Excel基于指定日期跨工作表提取匹配行的技术求助

Excel基于指定日期跨工作表提取匹配行的技术求助

看起来你已经找对方向了,差最后一步就能解决问题!你尝试的SMALL+IF+INDEX组合思路完全正确,只是公式里的细节没调整到位,而且忽略了数组公式的输入要求,我帮你一步步修正:

问题分析

你的核心需求是:在Printsheet的A2单元格输入日期后,自动从Database工作表中提取所有匹配该日期的行,填充到下方表格。你之前的公式之所以会提取所有行,是因为引用范围和数组公式的输入方式出了问题。

修正后的公式(分步骤)

假设Database的数据从第2行开始(第1行是表头),数据范围到第200行(你可以根据实际情况调整):

  1. 提取Unique Number(Printsheet的A4单元格)
    输入以下公式,注意:

    • 旧版Excel(非365/2021)输入后需要按 Ctrl+Shift+Enter 完成数组公式输入
    • 新版Excel(365/2021)直接回车即可
    =IFERROR(INDEX(Database!$A$2:$A$200, SMALL(IF(Database!$B$2:$B$200=$A$2, ROW(Database!$B$2:$B$200)-ROW(Database!$B$2)+1), ROWS($A$4:A4))), "")
    
  2. 提取其他列(比如Name,Printsheet的C4单元格)
    只需要修改INDEX引用的列范围,其余部分保持不变:

    =IFERROR(INDEX(Database!$C$2:$C$200, SMALL(IF(Database!$B$2:$B$200=$A$2, ROW(Database!$B$2:$B$200)-ROW(Database!$B$2)+1), ROWS($C$4:C4))), "")
    

关键修正点说明

  • 引用范围调整:你之前用了ROWS(Database!A$2:A2),这会引用Database的行号,应该改成ROWS($A$4:A4)(对应Printsheet当前单元格的起始行),这样下拉公式时会依次提取第1、2、3...个匹配项
  • 避免整列引用:不要用B:B这种整列范围,限定具体行(比如B$2:B$200)能提升公式运行效率,还能避免空行干扰
  • 日期格式统一:确保Printsheet A2的日期格式和Database B列的日期格式完全一致(比如都是日期值,不是文本格式的日期),否则会出现匹配失败

测试效果

当你在Printsheet的A2输入04/12/2023,下拉公式后,会自动提取Database中所有Trip Date为该日期的行,包括Trip #1、3、4、5、6的内容,完全符合你的打印需求。

备注:内容来源于stack exchange,提问作者Scott Bond

火山引擎 最新活动