You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Sheet2可修改日期范围提取Sheet1的唯一项目代码?

解决方案

正确公式

直接在Sheet2的目标单元格(比如A2)输入以下公式:

=UNIQUE(FILTER('Sheet1'!A2:A, 'Sheet1'!B2:B >= $D$2, 'Sheet1'!B2:B <= $E$2, ""))

或者用乘法逻辑替代逗号(效果完全一致):

=UNIQUE(FILTER('Sheet1'!A2:A, ('Sheet1'!B2:B >= $D$2) * ('Sheet1'!B2:B <= $E$2), ""))

你之前的错误点

  1. 条件逻辑完全写反:你把结束日期的判断写成了>=E2,这会筛选出同时晚于起始和结束日期的记录,和需求完全相反,必须改成<=E2。
  2. 公式结构无效:第一个IF公式根本没关联日期筛选逻辑,只是单纯返回A列的唯一值,完全起不到按日期过滤的作用。

解决新增内容不同步的问题

  • 如果你用的是Excel 365/2021:上述公式用的是开放式范围A2:A和B2:B,会自动包含Sheet1中A2、B2以下的所有非空行,只要开启自动计算(路径:文件>选项>公式>勾选「自动计算」),新增数据后结果会自动更新。
  • 如果你用的是旧版Excel:把Sheet1的数据转成结构化表格(选中数据区域按Ctrl+T,勾选「我的表格有标题」),然后公式改成引用表格列,比如:
    =UNIQUE(FILTER(Table1[项目代码], Table1[日期] >= $D$2, Table1[日期] <= $E$2, ""))
    
    结构化表格会自动扩展范围,新增行后公式会自动识别。

额外优化:处理空值

如果Sheet1里存在空行,可以用TOCOL函数忽略空单元格,避免出现无效结果:

=UNIQUE(FILTER(TOCOL('Sheet1'!A2:A,1), TOCOL('Sheet1'!B2:B,1) >= $D$2, TOCOL('Sheet1'!B2:B,1) <= $E$2, ""))

(TOCOL的第二个参数1表示忽略空单元格)

内容的提问来源于stack exchange,提问作者A King

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 13:17:41