递规之三——完整的科目名称一文中的示例,如果不用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。
标签:函数,左取,公式,Excel,LEN,A2,科目 From: https://www.cnblogs.com/officeplayer/p/17010096.html