2014-10-21 1 views
2

Когда я использую Excel 2013 webservice() и filterxml(), кажется, что у меня разные результаты, если я просто открываю xml в веб-браузере. в частности, я пытаюсь использовать excel для доступа к API из отдела энергетики. Адрес с ключом pubilc доступа является:Excel 2013 FILTERXML() возвращает неправильное значение?

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") 

I т и многие другие комбинации тоже, но я супер новичок в XPATH и, очевидно, что-то пропустил.

Может ли кто-нибудь помочь мне с функцией FILTERXML(), которая отлично копирует в Excel (правильные!) Данные, которые я могу видеть, когда я обращаюсь к XML через веб-браузер?

Спасибо!

ответ

0

У меня нет excell 2013, но я знаком с xpath.

Рассматривали ли вы только один xpath, чтобы возвращать пары значений, а не два?

, например: //data/row или //data/row//text()

или (при условии, Excell использует Xpath 2.0) что-то вроде: //data/row//string-join(text(),';')

ВСПОМИНАЕТ подтвердить формулу, используя Ctrl-shift-enter так, что массив результатов расширения для правильного размера.

+0

Спасибо! Я не хотел бы возвращать пары значений, но два предложения, которые вы дали только retun #VALUE !. Интересно, не правильно ли я рассматриваю его как массив или что-то еще? – jack

+0

Спасибо. Я также попробовал предложение Xpath 2.0, также возвращающее #VALUE !. И да, я подтвердил как массив, но до сих пор не повезло. Забывая о превосходстве на мгновение, какой Xpath вы использовали бы, чтобы вернуть вектор всех «значений», учитывая этот xml? есть ли что-то в моем подходе (в исходном сообщении), которое неправильно указано или каким-то образом заставляет его возвращать вещи, отличные от «значения»? Благодарю. – jack

+0

Я бы просто использовал: // data/row/value' и '// data/row/date' или с дополнительным текстом():' // data/row/value/text() 'и' // data/row/date/text() ' – user3616725

 Смежные вопросы

  • Нет связанных вопросов^_^