Google Docs: текущий курс валюты

Текущий курс валюты (в примере — курс доллара ЦБ РФ) можно получить с помощью следующей функции:

=IMPORTXML("http://www.cbr.ru/scripts/XML_daily.asp"; "//ValCurs/Valute[CharCode=""USD""]/Value")

То же самое на любую дату:

=IMPORTXML("http://www.cbr.ru/scripts/XML_daily.asp?date_req=01/01/2011"; "//ValCurs/Valute[CharCode=""USD""]/Value")

Дополнение от 7 янв. 2015:
Спасибо Илье Кочеткову за упрощение формулы. Старый вариант под катом. Возможно, кому-то пригодятся и решения из него. А можно даже ещё проще, т.к. буквенный код валюты уникален:
=IMPORTXML("http://www.cbr.ru/scripts/XML_daily.asp"; "//*[*=""USD""]/Value")
Спасибо Михаилу.

Дополнение от 13 фев. 2016:
Есть способ проще, с использованием встроенной функции:

=GOOGLEFINANCE("USDRUB")

Однако это не курс ЦБ РФ. Указывать дату также можно; подробная справка по функции находится здесь. Спасибо за подсказку Ивану.

Старый вариант:

=IMPORTXML("http://www.cbr.ru/scripts/XML_daily.asp"; "//ValCurs/Valute[@id="&char(34)&"R01235"&char(34)&"]/Value")

То же самое на любую дату:

=IMPORTXML("http://www.cbr.ru/scripts/XML_daily.asp?date_req=01/01/2011"; "//ValCurs/Valute[@id="&char(34)&"R01235"&char(34)&"]/Value")

41 thoughts on “Google Docs: текущий курс валюты”

  1. сегодня захотел работать только поиском по нумкоду:
    =IMPORTXML(«http://www.cbr.ru/scripts/XML_daily.asp»; «//ValCurs/Valute[NumCode=»»840″»]/Value»)

    1. Подставить вместо USD трёхбуквенное наименование гривны: UAH.

    1. Периодически бывает, что сайт ЦБ РФ не отдаёт XML. Таких случаев за день может быть несколько штук, но обычно это непродолжительно.

  2. Можно через скрипт, во примерно так, криво конечно, но для меня пойдет, по крайней мере дату не вручную вводить можно.

    Пишем скрипт, дополнение — редактор скриптов:
    function ff(input) {
    var x = new Date(input);
    var to= ( String(x.getDate()).replace(/^(.)$/, «0$1»)+’/’+ String(x.getMonth()+1).replace(/^(.)$/, «0$1») + ‘/’ + x.getFullYear());
    // Преобразует дату из ячейки к виду dd/mm/yyyy формате тест
    var fist= ‘http://www.cbr.ru/scripts/XML_daily.asp?date_req=’;
    var u1 = fist + to // первый аргумент
    return u1;
    }

    Не забываем тригер на открытие таблицы настроит.

    В таблицы выбираем ячейку вводим:

    =ff(«ссылка на ячейку с датой»)

    Данная функция будет возвращать ссылку, типа: http://www.cbr.ru/scripts/XML_daily.asp?date_req=01/01/2011

    с датой указной в ячейке.
    Способ конечно кривой. Может кто засунет все в скрипт. Может я потом сделаю.
    Спасибо за формулу.

    Для будущих дат, можно использовать логическую функцию, типо вот такую

    =if(TODAY()<B4; IMPORTXML(ff(TODAY());"//ValCurs/Valute[CharCode=""USD""]/Value");IMPORTXML(ff(B4);"//ValCurs/Valute[CharCode=""USD""]/Value"))
    Вроде правильно)

    1. Я не совсем понял про ввод даты вручную. В формуле точно так же можно брать дату из ячейки.

    2. необходим чтобы это ячейка содержала тип данных текст, а обычно используется тип данных дата. я про это.

    3. Подскажи, пожалуйста, как взять дату из ячейки?

    4. Просто сослаться на ячейку, и всё. А объединить со строкой с помощью CONCATENATE. Вот пример:

      <pre>
      =IMPORTXML(CONCATENATE("http://www.cbr.ru/scripts/XML_daily.asp?date_req="; D1);"//ValCurs/Valute[CharCode=""USD""]/Value")
      </pre>

      В этом примере D1 — адрес ячейки с датой.

  3. Спасибо, сильно упрощает жизнь!
    Еще бы аналогичным образом проставить кросс-курс €/$, может есть наводки?

    1. Если не устраивает функция GOOGLEFINANCE, и нужен именно курс ЦБ РФ, то можно кросс-курс посчитать через рубль.

  4. Упрощаем, упрощенную формулу :) =IMPORTXML(«http://www.cbr.ru/scripts/XML_daily.asp»; «//*[CharCode=»»USD»»]/Value»)

  5. Так как название каждой валюты всего 1 раз встречается в документе, то еще можно xpath запрос упросить до «//*[*=»»USD»»]/Value»

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *