完整的科目名称(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。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2020-12-28 《Power Query数据清洗实战》捉虫……