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

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

=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将数组中的内容连接,分隔符用“/”。 

公式也可以写成:

=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 @ 2022-12-28 14:35  熬肥妖  阅读(170)  评论(0编辑  收藏  举报