SPLIT函数可以将单元格中以分隔符连接的文本字符串拆分到单独的单元格。在VBA中,有一个内置的SPLIT函数可以实现这样的功能。本文尝试在Excel中使用LAMBDA来实现,这很难,但实现过程中能够学到很多。单击功能区“公式”选项卡“定义的名称”组中的“定义名称”,在对话框中,输入名称为:=LAMBDA(txt,delim,[n],[list],LET(p,IFERROR(FIND(delim,txt),0), list,IF(ISOMITTED(list), {""},list), IF(p,Splitter(MID(txt,p+1,99),delim,n+1,IF(SEQUENCE(1,n+1)1,list,LEFT(txt,p-1))),IF(n=0,txt,IF(SEQUENCE(1,n+1)1,list,txt)))))
单击“确定”后,在Excel工作表中就可以使用了,效果如下图1所示。这里使用了递归工作,提取第一个项目并将其放入列表中,然后调用自身提取下一个项目,依此类推。1.输入是要拆分的文本、文本中的分隔符、到目前为止找到的项目数、这些项目的列表(最后两项最初不是由用户提供的,而是用于递归,因此它们被标记为可选)。3.如果list变量为空(仅刚开始),将其设置为一个空白数组。4.如果找到了分隔符,使用剩余的文本、分隔符、项目数+1再次调用该函数,并将最新的项目添加到list中5.如果没有找到分隔符,就结束了,于是将剩余的文本添加到list中并输出。用长度为n的现有列表L,并在末尾附加一个新项T,因此数组现在有n+1项:IF(SEQUENCE(1,n+1)1, L, T)
到目前为止找到的项目列表被传递给SPLITTER进行下一次递归,但在第一轮递归时,没有列表可以追加,因此使用LET来检查,并创建一个空白数组。IF(ISOMITTED(list), {""}, list)
注:本文示例学习整理自mrexcel.com,供有兴趣的朋友研究。欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料,并通过社群加入专门的微信讨论群,更方便交流。