如何按指定符号与日期筛选列并提取对应描述生成目标列表
公式调整方案
现有公式问题说明
你当前写的公式存在两个核心问题:
IF(DATE(2021,8,21)的判断逻辑无效:DATE函数返回的是合法日期值,作为IF的判断条件永远为真,没有和你的表格日期列做匹配校验- 缺少「符号列包含指定关键词」的判断逻辑,也没有对多匹配结果做聚合/列表输出的处理
版本适配解决方案
适用Excel 365/2021及以上(支持动态数组)
假设你的表格列对应关系为:A列=日期列、B列=描述列、C列=符号列,指定日期存放在F1单元格、指定符号关键词存放在F2单元格,直接在目标单元格输入如下公式即可自动生成聚合后的列表:
=TEXTJOIN(CHAR(10),TRUE,FILTER(B:B,(A:A=F1)*(ISNUMBER(SEARCH(F2,C:C))),"无匹配结果"))
参数说明:
- 要生成换行分隔的列表就保留
CHAR(10),要生成顿号/逗号分隔的列表就替换为"、"/", ",设置后需开启单元格「自动换行」才能正常显示换行效果 - 关键词匹配默认不区分大小写,需要区分大小写的话把
SEARCH替换为FIND - 如果不需要引用单元格输入条件,也可以直接把参数写死:把
A:A=F1替换为A:A=DATE(2021,8,21),把SEARCH(F2,C:C)替换为SEARCH("CAT",C:C)即可
适用旧版本Excel(不支持动态数组)
需要使用数组公式,在第一个目标单元格输入如下内容后,按下Ctrl+Shift+Enter激活数组运算,再下拉公式即可逐行列出所有符合条件的描述:
=IFERROR(INDEX(B:B,SMALL(IF((A:A=$F$1)*(ISNUMBER(SEARCH($F$2,C:C))),ROW(B:B),99999),ROW(A1))),"")
下拉后无匹配结果的单元格会自动显示为空。
内容的提问来源于stack exchange,提问作者TeelowxD
相关产品推荐
相关产品推荐

