学习Excel技术,关注微信公众号:
excelperfect
在单元格A1中有一个包含“|”符号的字符串:
1|A|2|B|33|CC|4D|5CCC|1F|6YY43F5|9CD
现在,要求在单元格A2中输入一个公式,将其解析成由字符串构成的数组:
{1;"A";2;"B";33;"CC";"4D";"5CCC";"1F";"6YY43F5";"9CD"}
这个公式有一些限制:
1.不能使用VBA自定义函数,只能使用Excel内置函数。
2.不能使用MID函数。
在单元格A2中输入的公式为:
=FILTERXML("<a><b>"&SUBSTITUTE(A1,"|","</b><b>")&"</b></a>","//b")
在公式中,使用了不常见的FILTERXML函数来达到了我们的目的,如下图1所示。
图1
我们先来看看FILTERXML函数。
FILTERXML函数解析XML字符串,返回参数xpath提供的单个元素(节点或属性)。其语法为:
FILTERXML(xml,xpath)
其中,xml是有效的xml格式字符串,xpath是标准xpath格式字符串。
有些网站开发基础的朋友可能会知道,xml是用于编码文档的标记语言,有着严格的解析/验证;xpath是一种用于选择XML元素(如节点和属性)的查询语言,适用于XML和HTML。
对于本示例来说,公式中的:
"<a><b>"&SUBSTITUTE(A1,"|","</b><b>")&"</b></a>"
生成标准的XML:
"<a><b>1</b><b>A</b><b>2</b><b>B</b><b>33</b><b>CC</b><b>4D</b><b>5CCC</b><b>1F</b><b>6YY43F5</b><b>9CD</b></a>"
而参数xpath指定:
//b
表明接受标签b,并返回其节点内容。
很巧妙!
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。