如何修改Google Sheets多条件Index Match数组公式实现日期排序
Google Sheets 数组公式实现筛选+按日期排序
最终公式(两种可选方案)
方案1:FILTER + SORT + INDEX(推荐,简洁高效)
=ARRAYFORMULA(IFERROR(INDEX(SORT(FILTER({INDIRECT("'"&$B$5&" 2023'!C:C"), INDIRECT("'"&$B$5&" 2023'!AY:AY")}, ISLOGICAL(INDIRECT("'"&$B$5&" 2023'!CA:CA"))), 2, TRUE),,1), ""))
方案2:QUERY函数(逻辑更直观)
=ARRAYFORMULA(IFERROR(QUERY(INDIRECT("'"&$B$5&" 2023'!C:C,AY:AY,CA:CA"), "SELECT Col1 WHERE Col3 IS TRUE OR Col3 IS FALSE ORDER BY Col2 ASC", 1), ""))
公式解释
核心逻辑拆解
- 动态引用工作表:
INDIRECT("'"&$B$5&" 2023'!X:X")根据B5单元格内容,自动拼接目标工作表的引用(比如B5是"销售部",则引用'销售部 2023'工作表的对应列) - 筛选符合条件的行:
- 方案1中,
FILTER({销售列, 日期列}, ISLOGICAL(标记列))筛选出CA列为TRUE/FALSE的行,同时保留销售名称和关联日期 - 方案2中,QUERY的
WHERE Col3 IS TRUE OR Col3 IS FALSE实现相同筛选逻辑
- 方案1中,
- 按日期排序:
- 方案1中,
SORT(..., 2, TRUE)对筛选结果按第二列(AY列日期)升序排序,改为FALSE可切换为降序 - 方案2中,
ORDER BY Col2 ASC直接指定按日期列升序排序
- 方案1中,
- 提取销售名称:
- 方案1用
INDEX(..., ,1)提取排序结果的第一列(销售名称) - 方案2通过
SELECT Col1直接选择销售名称列
- 方案1用
- 错误处理:
IFERROR(..., "")确保无符合条件数据时返回空值,避免显示#N/A错误
替换原公式的优势
原公式用INDEX+SMALL+IF仅能按行号提取内容,无法直接实现排序。改用FILTER+SORT或QUERY的方式,既简化了公式结构,又原生支持排序需求,同时保留了动态引用工作表的功能。
内容的提问来源于stack exchange,提问作者Diego Kersjes
相关产品推荐
相关产品推荐

