Excel中按日期区间查找B列包含“yy”的C列首个值问题
Excel中按日期区间查找B列包含“yy”的C列首个值问题
我最近在Excel里碰到了一个查找需求,想找到C列中符合以下所有条件的第一个值:
- 对应的B列文本里必须包含“yy”
- 对应的A列日期要落在B1(开始日期)和B2(结束日期)的区间内
而且A列是已经按日期排好序的,我想要的结果是表格里黄色标注的13.48。
之前我参考了一些类似问题的思路,用了下面这个公式,但它只能匹配完整的文本内容(比如必须完全等于"apple yy red"),没办法识别只要包含“yy”的情况,所以一直没得到正确结果:
=INDEX(C:C,MATCH(1,((B:B="apple yy red")*(A:A>=B1)*(A:A<=B2)),0))
后来我调整了公式的匹配逻辑,把精确匹配改成包含匹配,就解决问题了。这里用到ISNUMBER(SEARCH("yy",B:B))来判断B列单元格是否包含“yy”——SEARCH函数会返回“yy”在文本中的位置,找不到就返回错误值,ISNUMBER把它转换成布尔值(找到为TRUE,对应1;没找到为FALSE,对应0)。
调整后的完整公式如下:
=INDEX(C:C,MATCH(1,(ISNUMBER(SEARCH("yy",B:B))*(A:A>=B1)*(A:A<=B2)),0))
如果你的Excel版本支持动态数组函数,也可以用XLOOKUP来实现,逻辑会更直观:
=XLOOKUP(TRUE,ISNUMBER(SEARCH("yy",B:B))*(A:A>=B1)*(A:A<=B2),C:C,"",0,1)
这里最后一个参数1表示按从上到下的顺序查找第一个符合条件的值,正好契合我们找首个值的需求。
备注:内容来源于stack exchange,提问作者Daveo
相关产品推荐
相关产品推荐

