Excel 2013 FILTERXML()返回错误的值?

时间:2014-10-21 18:14:50

标签: xml excel xpath excel-2013

当我使用Excel 2013的新webservice()filterxml()时,如果我只是在网络浏览器中打开xml,似乎会得到不同的结果。具体来说,我正在尝试使用excel从能源部门访问API。使用pubilc访问密钥的地址是:

http://api.eia.gov/series/?api_key=449E5B5A53EBB9601A80681EBFFBB91E&series_id=PET.MTTUA_NUS_1.M&num=150&out=xml

当我使用网络浏览器访问上述地址时,Dec-13值显示为9931:

...
<row>
  <date>201312</date>
  <value>9931</value>
...

我知道这是正确的价值。

然而,当我尝试通过新的excel公式访问它时,我得到了一个奇怪的结果......大多数月份是正确的,但有些是错误的...例如,Dec-13返回值为2,933,263。不明白为什么 - 我无法看到这个数字的来源。

我已将WEBSERVICE()与上面的地址一起使用,然后尝试使用FILTERXML()生成两个并排数组,其中一个是日期,另一个是值:

对于日期,其中K1是WEBSERVICE()的位置,公式确认为数组:

=FILTERXML(K$1,"//date") 

并返回值:

=FILTERXML(K$1,"/eia_api/series/row/data/row/value")

我也尝试了很多其他组合,但我对XPATH来说是一个超级新手并且显然错过了一些东西。

有人可以帮助我使用FILTERXML()函数在Excel中完美复制我通过网络浏览器访问XML时可以看到的(正确!)数据吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我不喜欢2013年,但我对xpath很熟悉。

您是否只考虑了一个xpath,返回值对,而不是两个?

例如://data/row//data/row//text()

或(提供excell使用Xpath 2.0)类似于://data/row//string-join(text(),';')

DO REMEMBER使用Ctrl-shift-enter确认公式,以便结果数组扩展到正确的大小。