我可能有这样的 XML 字符串
\n\n<data>\n <a> \xe2\x80\x9cone\xe2\x80\x9d </a>\n <a> \xe2\x80\x9cthree\xe2\x80\x9d </a>\n <a> \xe2\x80\x9ctwo\xe2\x80\x9d </a>\n</data>\nRun Code Online (Sandbox Code Playgroud)\n\n在 Excel 单元格中,它看起来像这样。
\n\n[A2] = "<data><a>one</a><a>three</a><a>two</a></data>"\nRun Code Online (Sandbox Code Playgroud)\n\n我想使用 FILTERXML() 函数按顺序提取数字“二”和“三”。我知道如何用这个公式做到这一点。
\n\n=FILTERXML(A2,"/data/a[3]") & FILTERXML(A2","/data/a[2]"))\nRun Code Online (Sandbox Code Playgroud)\n\n但是,必须有一种方法可以在单个函数调用中连接两个元素,例如
\n\n=FILTERXML(A2,"/data/a[3]" & "/data/a[2]")\nRun Code Online (Sandbox Code Playgroud)\n\n事实上,我想它应该比这更简单。谁能告诉我该怎么做?
\n如果你想将这两个作为数组返回,我会使用:
\n\n=INDEX(FILTERXML(A2,"//a"),{3,2})\nRun Code Online (Sandbox Code Playgroud)\n\n或者
\n\n=INDEX(FILTERXML(A2,"//a"),{3;2})\nRun Code Online (Sandbox Code Playgroud)\n\n如果您想将它们作为连接字符串返回,您可以使用:
\n\n=TEXTJOIN(",",TRUE,INDEX(FILTERXML(A2,"//a"),{3;2}))\nRun Code Online (Sandbox Code Playgroud)\n\n以下是根据您的评论/问题的一些用法示例
\n\n\n\n我没有提供 SUM返回零的示例,因为您的数据不是数字。
请注意,如果您使用的是较旧版本的 Excel,没有动态数组,您可能(或可能不必)必须使用ctrl+shift+enter来确认公式,和/或对于简单=INDEX(\xe2\x80\xa6公式,将其作为数组输入到多个单元格中。
C2: =INDEX(FILTERXML(A2,"//a"),{3,2})\nC4: =INDEX(FILTERXML(A2,"//a"),{3;2})\n\nC7: =COUNTA(INDEX(FILTERXML(A2,"//a"),{3,2}))\nC8: =MATCH("\xe2\x80\x9cthree\xe2\x80\x9d",INDEX(FILTERXML(A2,"//a"),{3,2}),0)\nRun Code Online (Sandbox Code Playgroud)\n