WPS包含关系数据查询,你这样写就对了!
E精精
WPS函数专家
嗨!大家好,我是小编-E精精
最近在社区做了不少答疑,今天我们抽其中一个,跟大家一起交流学习一下!提供3种思路!
▍需求说明
A:C三列为数据源区域,现在需要根据E列的单号,查询对应的项目!结果返回在F列!
问题的难度不大, 我们只需要找到E列单号在C列的哪一行中即可定位对应的A列数据!
▍参考解法01
第一种解决思路,就是传统的查询思路,我们拿E2单元格的“单1”来说,直接使用FIND函数,查询C列中是否包含,配合ISNUMBER判断!
FIND函数会返回首次出现的位置,如果不包含就会返回错误,所以我们只要判断是否是数字即可,是数字说明包含,否则不包含
通过ISNUMBER函数来判断
之后把这个部分作为FILTER函数的第二参数,也就是筛选条件,筛选数据即可!
=FILTER($A$2:$A$4,ISNUMBER(FIND($E2,$C$2:$C$4)))
以上就是第一种解法,比较传统的思路!也是最好理解的思路!
下面我们再看看其他思路!
▍参考解法02
条件的判断,还是可以使用新的正则函数,同时筛选,也可以使用IF等函数处理!
函数公式如下:核心部分是用REGEXP函数测试是否包含,TOCOL函数处理是处理掉不满足条件利用文本没有添加双引号报的错,最后的@符号,主要处理多个满足条件的结果问题,返回首个!
=@TOCOL(IF(REGEXP($C$2:$C$4,$E2,1),$A$2:$A$4,\),2)
如果你还停留的老版本,连FILTER函数都没有,那么怎么办,我是想说凉拌的,但是真的不能够,还是有解法的!
▍参考解法03
低版本函数解法!其实也没啥,同样的逻辑判断,只是满足条件,我们就返回对应的行号,可能有多个,我们用一个聚合函数,比如MIN或者MAX等函数,处理成单值即可,然后配合其他查询引用类函数都可以,毕竟行号都有了,INDEX或者INDIRECT完全OK的!
=INDIRECT("A"&MAX(IF(ISNUMBER(FIND(E2,C2:C4)),ROW(C2:C4))))
OK!关于这个问题,我们就简单聊这么几种解法,兼顾新老版本~因为够用了吧!
@金山办公
创作者俱乐部成员
创作者俱乐部成员
创作者俱乐部成员
WPS函数专家
WPS函数专家
创作者俱乐部成员
创作者俱乐部成员
创作者俱乐部成员