Текущий курс валюты (в примере — курс доллара ЦБ РФ) можно получить с помощью следующей функции:
То же самое на любую дату:
Дополнение от 7 янв. 2015:
Спасибо Илье Кочеткову за упрощение формулы. Старый вариант под катом. Возможно, кому-то пригодятся и решения из него. А можно даже ещё проще, т.к. буквенный код валюты уникален:
=IMPORTXML("http://www.cbr.ru/scripts/XML_daily.asp"; "//*[*=""USD""]/Value")
Спасибо Михаилу.
Дополнение от 13 фев. 2016:
Есть способ проще, с использованием встроенной функции:
Однако это не курс ЦБ РФ. Указывать дату также можно; подробная справка по функции находится здесь. Спасибо за подсказку Ивану.
Старый вариант:
То же самое на любую дату:
Спасибо огромное, отличный пример
Спасибо!
загуглил запрос_xpath (второй параметр)
вида
«//ValCurs/Valute[CharCode=»»USD»»]/Value»
будет понятней
Спасибо, обновил статью.
сегодня захотел работать только поиском по нумкоду:
=IMPORTXML(«http://www.cbr.ru/scripts/XML_daily.asp»; «//ValCurs/Valute[NumCode=»»840″»]/Value»)
Как сделать тоже самое, но с гривной?
Подставить вместо USD трёхбуквенное наименование гривны: UAH.
Перестал работать как то (
Периодически бывает, что сайт ЦБ РФ не отдаёт XML. Таких случаев за день может быть несколько штук, но обычно это непродолжительно.
Можно через скрипт, во примерно так, криво конечно, но для меня пойдет, по крайней мере дату не вручную вводить можно.
Пишем скрипт, дополнение — редактор скриптов:
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"))
Вроде правильно)
Я не совсем понял про ввод даты вручную. В формуле точно так же можно брать дату из ячейки.
необходим чтобы это ячейка содержала тип данных текст, а обычно используется тип данных дата. я про это.
есть функция TO_TEXT плюс форматирование даты
Подскажи, пожалуйста, как взять дату из ячейки?
Просто сослаться на ячейку, и всё. А объединить со строкой с помощью CONCATENATE. Вот пример:
=IMPORTXML(CONCATENATE("http://www.cbr.ru/scripts/XML_daily.asp?date_req="; D1);"//ValCurs/Valute[CharCode=""USD""]/Value")
</pre>
В этом примере D1 — адрес ячейки с датой.
Можно проще:
=GOOGLEFINANCE(«USDRUB»)
Да, но это не курс ЦБ:
https://goo.gl/photos/2WmLkNHHL6KcynHa9
Но добавлю в статью, когда доберусь до компа.
Спасибо, сильно упрощает жизнь!
Еще бы аналогичным образом проставить кросс-курс €/$, может есть наводки?
Если не устраивает функция GOOGLEFINANCE, и нужен именно курс ЦБ РФ, то можно кросс-курс посчитать через рубль.
Упрощаем, упрощенную формулу :) =IMPORTXML(«http://www.cbr.ru/scripts/XML_daily.asp»; «//*[CharCode=»»USD»»]/Value»)
Так как название каждой валюты всего 1 раз встречается в документе, то еще можно xpath запрос упросить до «//*[*=»»USD»»]/Value»
Да, действительно :) Спасибо.