Excel如何筛选甘特表周度任务并同步到周计划工作表?
Excel周视图日程表跨表匹配任务实现方案
问题原因
你之前写的FILTER公式跑不出正确结果,核心是两个错误:
- 用错了函数:
AND只能做单值逻辑判断,放在数组运算场景下只会返回一个总的布尔值,没法逐行判断任务是否匹配,FILTER拿不到逐行的筛选条件自然出不了正确结果 - 引用错了单元格:第二个判断条件写的是大于等于U25,两个筛选条件没有统一指向当前要匹配的单日日期单元格,逻辑从根上就不成立
可直接复用的实现步骤
1. 单日期任务匹配核心公式
判断某一日期是否落在任务时间区间内的逻辑为:任务开始日期≤当前日期,且任务截止日期≥当前日期。由于AND不支持数组运算,直接用数组乘法实现逻辑与即可(两个条件同时成立时乘积为1,等价于逻辑判断TRUE)。
假设Plan-Semana表中待匹配的单日日期存放在C25单元格,ChartGantt表任务名称在A列、start日期在I列、deadline日期在J列,在C25下方要展示任务的单元格输入以下公式:
=FILTER(ChartGantt!$A:$A, (ChartGantt!$I:$I<=C$25)*(ChartGantt!$J:$J>=C$25), "无匹配任务")
公式里加了$绝对引用锁定任务表的列、以及日期所在的行号,后续填充时不会出现引用偏移。
2. 周视图批量填充
- 先确认
Plan-Semana表每一列的列首单元格均为标准日期格式(不是文本型日期,判断方式:将单元格格式改为「常规」,显示为40000左右的数值即为标准日期) - 选中已经输入公式的单元格,向右拖动填充柄到本周所有工作日列,公式会自动匹配对应列的列首日期,筛选出当日需要展示的所有任务
- 如果想在单个单元格内展示当日全部任务、避免占用多行空白,可以在公式外层套
TEXTJOIN做换行拼接,输入后将单元格设置为自动换行即可:
=TEXTJOIN(CHAR(10), TRUE, FILTER(ChartGantt!$A:$A, (ChartGantt!$I:$I<=C$25)*(ChartGantt!$J:$J>=C$25), "无匹配任务"))
3. 效果说明
上述公式会自动识别跨天/跨周任务,只要任务的时间区间覆盖了对应日期,就会自动在当日单元格展示,完全匹配谷歌日历周视图的按日展示逻辑,不需要额外给长周期任务做重复标记。
注意事项
- 如果使用2019及更早版本的Excel(无动态数组支持),FILTER函数无法使用,需要替换为
INDEX+SMALL+IF组合的传统数组公式实现相同逻辑 - 如果筛选结果出现异常,优先检查三个位置的格式:任务start列、任务deadline列、周视图列首日期,必须全部为标准日期格式,不能是文本。
内容的提问来源于stack exchange,提问作者user2535338
相关产品推荐
相关产品推荐

