完整的科目名称(Excel函数集团)

递归之三——完整的科目名称一文中的示例,如果不用Lambda,倒也不是就完全无解,公式可以写成:

1
=TEXTJOIN(" / ",,IFERROR(XLOOKUP(--LEFT(A2,LEN(A2)-{4,2,0}),A:A,B:B),""))

 

公式中,用Left函数分别提取A2单元格的,总长度减4、2、0的字符串,如果A2只有4个字符,左取的就是0、2、4位;如果A2有8个字符,左取的就是4、6、8位。

加双负号是将文本型数字强制转换为数值。

用Xlookup分别查找左取后的三个数值在A列中对应B列的结果。

IfError用于消错,左取0位就是空,再加双负号是要出错的;另外,原本只有4位的,左取两位后再查找,也会因为查无结果面返回错误值。

最后用TextJoin将数组中的内容连接,分隔符用“/”。 

公式也可以写成:

1
=TEXTJOIN(" / ",,XLOOKUP(--LEFT(A2,ROW(INDIRECT("2:"&LEN(A2)/2))*2),A:A,B:B))

公式中的ROW(INDIRECT("2:"&LEN(A2)/2))*2部分,直接建构了一个针对不同位数的数组,A2如果分别为4位、6位和8位,其结果分别为4;4和6;4、6和8。

相关视频:https://v.douyin.com/BAU1TpR/

posted @   熬肥妖  阅读(181)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2020-12-28 《Power Query数据清洗实战》捉虫……
点击右上角即可分享
微信分享提示