在单元格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,并返回其节点内容。
很巧妙!
联系客服