当我使用Excel 2013的新webservice()
和filterxml()
时,如果我只是在网络浏览器中打开xml,似乎会得到不同的结果。具体来说,我正在尝试使用excel从能源部门访问API。使用pubilc访问密钥的地址是:
当我使用网络浏览器访问上述地址时,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时可以看到的(正确!)数据吗?
谢谢!
答案 0 :(得分:0)
我不喜欢2013年,但我对xpath很熟悉。
您是否只考虑了一个xpath,返回值对,而不是两个?
例如://data/row
或//data/row//text()
或(提供excell使用Xpath 2.0)类似于://data/row//string-join(text(),';')
DO REMEMBER使用Ctrl-shift-enter
确认公式,以便结果数组扩展到正确的大小。