分享

regexp是一个超级提取器,配合filter和find,提取答案对应的字母选项

 Excel情报局 2025-05-08 发布于河北

Excel情报局

职场联盟Excel

探索挖掘分享Excel实用技能
Super Excel Man
用1%的Excel基础搞定99%的职场难题
做一个超级实用的Excel公众号
Excel是门手艺玩转需要勇气
数万表格爱好者聚集地
图片


大家好,今天我们进行问题答疑。这是一位微信群里的小伙伴咨询提问的,问题大致是这样的:已知问题的答案,如何从ABCD四个选项中,将答案所对应的字母选项提取记录下来。

我们自制数据源,还原真实的办公场景,并寻求找到答案。

如下图所示
C2:F2区域各个单元格内容是问题答案的四个选项,四个选项的格式均一致:“(字母)答案”,比如:(B)北京。

A2单元格是已知的问题答案“北京”,我们想要根据A2单元格已知的答案,在C2:F2区域的四个选项中,将答案对应的字母选项“B”,提取出来,显示在H2单元格内。


我们话不多说,分步骤拆解公式结构讲解解题思路


第一步:查找

输入FIND函数:
=FIND(A2,C2:F2)

使用FIND函数,查找A2单元格中的字符,在C2:F2区域各个单元格内出现的位置。因为“北京”,在C2、E2与F2单元格内均未出现过,故返回错误值。“北京”只有在B2单元格中的第4个字符位置处出现了,故B2单元格处返回数字“4”。

终上所述,FIND函数返回一组数组溢出结果:
{#VALUE!,4,#VALUE!,#VALUE!}

由错误值和数字构成,只有当返回是数字的时候,其对应的单元格才是问题答案所在的选项位置。



第二步:数字与错误值 逻辑值化

为了方便后续步骤的具体实现,我们外嵌ISNUMBER函数:
=ISNUMBER(FIND(A2,C2:F2))

ISNUMBER是判断所选参数是否为数字的函数。

将上一步数组溢出的结果进行是否为数字的判断,若数组元素为数字,返回逻辑值TRUE,若数组元素不是数字,返回逻辑值FALSE。

故返回新的数组溢出结果:
{FALSE,TRUE,FALSE,FALSE}

元素TRUE的位置就是答案所在正确选项的位置D2单元格。



第三步:筛选

外嵌FILTER函数:
=FILTER(C2:F2,ISNUMBER(FIND(A2,C2:F2)))

使用FILTER具有筛选作用的函数,将C2:F2区域内,条件满足当逻辑值为TRUE时,将对应位置的值筛选出来。

所以D2单元格是正确选项所在的单元格,就被FILTER函数筛选出来了,显示内容为:“(B)北京”。



第四步: 核心步骤,正则提取

外嵌正则表达式REGEXP函数:
=REGEXP(FILTER(C2:F2,ISNUMBER(FIND(A2,C2:F2))),"A|B|C|D")

|:表示逻辑“或”的意思。

正则表达式部分:"A|B|C|D",则表示A或B或C或D。

REGEXP函数省略的第3参数,默认“提取”模式。

整体的意思就是:提取上一步返回结果“(B)北京”中的,含有A或B或C或D的值,因为“(B)北京”中含有“B”,故正确答案所对应的字母选项“B”就被提取到啦!


学习Excel,如果你没有天赋,那就一直重复,当你快到本能反应的时候,你的重复就是别人眼中的天赋,冲破捆绑,展翅翱翔。回顾关键内容,善用图片表达,学会建立联系,拓展深度广度,浓缩关键概念,应用到行动中,善于归纳总结,尝试进行分享。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多