Excel中QBO Task自定义字段提取及XmlData列值公式调用问题
解决方案:提取XmlData列中的QBO自定义字段值
你导入后得到的XmlData列存储的是结构化XML字符串,QBO的自定义字段会以对应标签形式存储在这段XML中,可以按你使用的Excel版本选择对应方法提取字段值:
方法1:Excel 365/2021 版本(推荐)
直接用内置的FILTERXML函数通过XPath路径定位字段,不需要额外写复杂的文本截取逻辑:
- 第一步先确认
XmlData列的单元格格式为文本,避免XML标签被Excel自动转义失效 - 通用提取公式模板,替换其中的
你的自定义字段名即可使用:=FILTERXML([@XmlData], "//*[local-name()='你的自定义字段名']") - 示例:要提取名为
ApplyDate的申请日期自定义字段,公式为:=FILTERXML([@XmlData], "//*[local-name()='ApplyDate']") - 如果同一个字段有多个返回值需要合并,可嵌套
TEXTJOIN处理:=TEXTJOIN(",",TRUE,FILTERXML([@XmlData], "//*[local-name()='ApplyDate']"))
方法2:2019及更早版本Excel(无FILTERXML函数)
用文本截取函数组合实现提取:
- 通用公式模板,替换两处
你的自定义字段名即可使用:=MID([@XmlData],FIND("<你的自定义字段名>",[@XmlData])+LEN("<你的自定义字段名>"),FIND("</你的自定义字段名>",[@XmlData])-FIND("<你的自定义字段名>",[@XmlData])-LEN("<你的自定义字段名>")) - 要避免字段不存在时返回错误值,可嵌套
IFERROR处理:=IFERROR(MID([@XmlData],FIND("<你的自定义字段名>",[@XmlData])+LEN("<你的自定义字段名>"),FIND("</你的自定义字段名>",[@XmlData])-FIND("<你的自定义字段名>",[@XmlData])-LEN("<你的自定义字段名>")),"-")
注意:如果你的XML带有命名空间前缀(比如
<qbo:ApplyDate>格式),方法1的local-name()写法已经自动规避了命名空间影响,无需额外调整;用方法2时把字段名的前缀也一并带入即可。
内容的提问来源于stack exchange,提问作者Eric Patrick
相关产品推荐
相关产品推荐

