某些数据的 FilterXML 公式为空

FilterXML Formula Comes Empty for some of Data

我有一个问题,希望你能帮上忙。我一直在使用 MS Excel 2016,其中我有很多数据,例如下面的附件。

其中 FILTERXML 适用于某些单元格并提取数据,但它也不适用于某些具有相似数据且 returns 为空的单元格。

我尝试清理单元格数据,同时查看其他单元格数据,结果出现在公式中,但它仍然不起作用。

非常感谢您的帮助。

=IFERROR(FILTERXML("<a><b>"&SUBSTITUTE(SUBSTITUTE($A2,B&":","<r/>"),CHAR(10),"</b><b>")&"</b></a>","//b[r]["&COUNTIF($B:B,B)&"]"),"")

https://drive.google.com/file/d/1Xv4BUh8sObhVirqYK2fsLfwsydvrs4rv/view?usp=sharing

您的公式使用 XML 过滤,使用 XPATH。但是对于XML,有些字符有特殊含义,必须转义。例如,您的文本 Pharmacy: 1ST AID PHARMACY & SURGICAL SUPPLIEXML 中必须是 Pharmacy: 1ST AID PHARMACY &amp; SURGICAL SUPPLIE。这是因为 & 标记了 XML 中实体的开始,如果它没有那个含义就需要转义。

因此您必须将所有 & 替换为 &amp;

=IFERROR(FILTERXML("<a><b>"&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($A2,"&","&amp;"),B&":","<r/>"),CHAR(10),"</b><b>")&"</b></a>","//b[r]["&COUNTIF($B:B,B)&"]"),"")

但是还有多个这样的角色。例如字符 < 必须是 &lt;。这是因为 < 标记了 XML 中标签的开始,如果它没有那个意思就需要转义。

=IFERROR(FILTERXML("<a><b>"&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE($A2,"<","&lt;"),"&","&amp;"),B&":","<r/>"),CHAR(10),"</b><b>")&"</b></a>","//b[r]["&COUNTIF($B:B,B)&"]"),"")

也许还有其他人,所以 SUBSTITUTE 链越来越长。