Как в эксель привязать курс валют онлайн
Перейти к содержимому

Как в эксель привязать курс валют онлайн

  • автор:

Загрузка курсов валют в Excel

Разбираем загрузку валютных курсов с сайта ЦБ РФ в MS Excel. Подобная статья есть и для Power BI (ссылка).

Этап 1: Сгенерим ссылку на сайте ЦБ РФ.

Зайдём на сайт по адресу: https://www.cbr.ru/
В меню найдём раздел — “Динамика официального курса заданной валюты” (“Документы и данные” — “Базы данных” — “Базы данных по курсам валют” — “Динамика официального курса заданной валюты”)



Выберем табличный вид, выберем валюту, период дат. Нажмём — “Получить данные”. Увидим табличку с курсами валюты за выбранный диапазон дат:

Скопируем ссылку из адресной строки браузера:
https://www.cbr.ru/currency_base/dynamics/?UniDbQuery.Posted=True&UniDbQuery.mode=1&UniDbQuery.date_req1=&UniDbQuery.date_req2=&UniDbQuery.VAL_NM_RQ=R01010&UniDbQuery.From=05.03.2021&UniDbQuery.To=12.03.2021

Обратим внимание, что в ссылке содержатся даты выбранного диапазона. Нам это пригодится, когда будем настраивать адаптируемый под нашу задачу диапазон дат.

Этап 2: Загрузим данные в Excel

В Excel перейдём на панели вкладку “Данные”, выберем получение данных с web-страницы (“Создать запрос” — “Из других источников” — “Из интернета”):

В появившемся окошке вставим полученную на предыдущем этапе ссылку на сайт ЦБ РФ:

В навигаторе увидим, что на странице распознано четыре табличных элемента. Нам нужен последний. Нажмём “Преобразовать данные”:

Попадаем в Power Query, где мы можем произвести дополнительную обработку данных перед загрузкой в модель данных Power BI. В правой плашке видим уже произведённые шаги — подключение к источнику данных, навигация по таблицам и изменение типов данных. Шаг с изменением типов данных удалим (если оставить, ничего страшного не случится, но он лишний):

Далее удалим первую строку с указанием на валюту:



И поднимем оставшуюся строку до уровня заголовков:

Получим вот такую вполне приличную табличку:

Этап 3: Сделаем диапазон дат подстраивающимся под реальность:

Отправимся в “Расширенный редактор” (“Advanced Editor”):

Там увидим вот такой код, который описывает на языке M все действия, которые мы произвели ранее:

Для желающих сократить путь, вот этот код:

Data2 = Источник<2>[Data],


#»Удаленные верхние строки» = Table.Skip(Data2,1),

#»Повышенные заголовки» = Table.PromoteHeaders(#»Удаленные верхние строки», [PromoteAllScalars=true]),

#»Измененный тип» = Table.TransformColumnTypes(#»Повышенные заголовки»,<<"Дата", type date>, , >)

Вспомним, что в ссылке у нас есть даты. Воспользуемся этим и заменим их на те, которые нам нужны. Для этого перед подключением к источнику данных две переменных — дату начала диапазона для выгрузки курсов валюты и дату окончания диапазона. Дату начала определим для начала так:
start_date = #date(2020,1,1)

Далее преобразуем её в текст с помощью функции Date.ToText, чтобы впоследствии вставить в нашу ссылку:
start_date = Date.ToText(#date(2020,1,1), «dd.MM.yyyy»)

Дату окончания диапазона получим с помощью функции DateTime.LocalNow:
end_date = DateTime.LocalNow()

В результате получим текущую дату и время. Нам нужна только дата, поэтому следующим шагом извлечём дату с помощью функции Date.From:
end_date = Date.From(DateTime.LocalNow())

И напоследок аналогично дате старта — преобразуем в текст:
end_date = Date.ToText(Date.From(DateTime.LocalNow()), «dd.MM.yyyy»)

Внимательные читатели спросят — а зачем нам извлекать дату из даты и времени, если мы потом в текст берём всё равно только элементы даты. Казалось бы, можно вместо вот такого:
end_date = Date.ToText(Date.From(DateTime.LocalNow()), «dd.MM.yyyy»)

написать вот так:
end_date = Date.ToText(DateTime.LocalNow(), «dd.MM.yyyy»)
Но — нет. Функция Date.ToText в качестве аргумента принимает формат date, но не datetime.
Однако, справедливо будет отметить альтернативный вариант с использованием DateTime.ToText:
end_date = DateTime.ToText(DateTime.LocalNow(), «dd.MM.yyyy»)

Так или иначе, наша задача — получить две даты в текстовом формате «dd.MM.yyyy» с тем, чтобы после вставить их в ссылку для подключения к web-странице.

После получения дат преобразуем запрос к источнику так, чтобы можно было заменить часть текстовой ссылки на переменные. Для этого разобьём ссылку на части, заменим даты на переменные и соберём обратно с помощью Text.Combine:

Получить обменный курс валюты

С помощью типа данных Валюты можно легко получить и сравнить обменные курсы по всему миру. В этой статье вы узнаете, как вводить пары валют, преобразовывать их в тип данных и извлекать дополнительные сведения для надежных данных.

Изображение преобразованной таблицы валюты с курсами обмена.

Примечание: Валютные пары доступны только для Microsoft 365 (клиенты с несколькими клиентами по всему миру).

Использование типа данных «Валюты» для расчета обменных курсов

  1. Введите валютную пару в ячейку, используя такой формат: Из валюты / В валюту с кодами валют ISO.

Значок связанной записи для акций

Если Excel обнаружит совпадение между валютной парой и поставщиком данных, текст преобразуется в тип данных, а в ячейке значок Валюты.

Значок вопросии

Примечание: Если в ячейке вместо значка Валюты, Excel затруднение при совпадении текста с данными. Исправь все ошибки и нажмите ввод, чтобы повторить попытку. Можно также выбрать значок, чтобы открыть селектор данных, в котором можно найти валютную пару или указать нужные данные.

Кнопка

  • Чтобы извлечь дополнительные сведения из типа данных Валюты, выберите одну или несколько преобразованных ячеек и нажмите кнопку Вставить данные отобразить или нажать клавиши CTRL/CMD+SHIFT+F5.
  • Вы увидите список всех доступных полей. Выберите поля, чтобы добавить новый столбец данных.

    Внимание: Сведения о валюте предоставляются «как есть» и могут быть задержаны. Поэтому эти данные не следует использовать в целях торговли или советов. Дополнительные сведения см. всведениях об источниках данных.

    Лайфхак в Excel: как подгрузить курсы валют с сайта ЦБ

    Большинство работников финансовой сферы воспринимают Excel как красивый калькулятор. Мы решили помочь вам развить навыки использования этого важного инструмента, сделать из него настоящего помощника, а не просто хранителя данных. Предлагаем вам посмотреть, как можно подгрузить данные из сети Интернет непосредственно в таблицу Excel и создать функцию выбора курса валют на необходимую дату.

    Немного больше 60 лет прошло с момента изобретения первого компьютера и около 50 лет с первых шагов по созданию интернета. Сейчас практически у каждого в кармане лежит мини-компьютер (смартфон) с доступом в сеть, уже начали появляться машины без водителя, некоторые и вовсе собираются колонизировать Марс. При этом большинство наших слушателей (работников финансовой сферы) до сих пор воспринимают Excel как красивый калькулятор. Мы решили помочь вам развить навыки использования этого важного инструмента, сделать из него настоящего помощника, а не просто хранителя данных.

    Сегодня предлагаем вам посмотреть, как можно подгрузить данные из сети Интернет непосредственно в таблицу Excel и обработать их (создать функцию выбора курса валют на необходимую дату).

    Для чего может понадобиться эта возможность?

    Если вам регулярно необходим курс Центрального Банка РФ, то функция «Загрузка курса с сайта ЦБ» позволит сэкономить много времени.

    Разбиваем задачу на две части:

    (1) Автоматизируем загрузку курсов валют за необходимый период с сайта Центрального Банка России

    (2) Пишем небольшой скрипт, который создаст «Пользовательскую функцию» для выбора курса на дату и предоставит его вставку в ячейку

    Хотите уметь делать так сами? Это не сложно.

    Ознакомьтесь со следующими курсами по Excel от HOCK Training:

    Импорт курса валют из интернета

    Импорт курса заданной валюты из интернета с автоматическим обновлением — весьма частая задача для многих пользователей Microsoft Excel. Представьте, что у вас есть прайс-лист, который должен пересчитываться каждое утро в соответствии с курсом. Или бюджет проекта. Или стоимость договора, которую надо посчитать, используя курс доллара на дату заключения договора. В подобных ситуациях можно решить проблему по разному — всё зависит от того, какая версия Excel у вас установлена и какие надстройки поверх неё стоят.

    Способ 1. Простой веб-запрос для текущего курса валют

    Этот способ подойдет тем, у кого на компьютере пока ещё старые версии Microsoft Office 2003-2007. Он не использует никаких сторонних надстроек или макросов и оперирует только встроенными функциями. Нажмите кнопку Из интернета (Web) на вкладке Данные (Data) . В появившемся окне в строку Адрес (Address) введите URL сайта, с которого будет браться информация (например http://www.finmarket.ru/currency/rates/) и нажмите клавишу Enter . webquery11.pngКогда страница загрузится, то на таблицах, которые Excel может импортировать, появятся черно-желтые стрелки. Щелчок по такой стрелке помечает таблицу для импорта. Когда все необходимые таблицы помечены — нажмите кнопку Импорт (Import) внизу окна. Спустя некоторое время, нужное для загрузки данных, содержимое отмеченных таблиц появится в ячейках на листе: webquery12.pngДля дополнительной настройки можно щелкнуть по любой из этих ячеек правой кнопкой мыши и выбрать в контекстном меню команду Свойства диапазона (Data range properties) . В этом диалоговом окне, при желании, возможно настроить периодичность обновления и другие параметры: webquery13.pngКотировки акций, т.к. они меняются каждые несколько минут, можно обновлять почаще (флажок Обновлять каждые N мин.), а вот курсы валют, в большинстве случаев, достаточно обновлять раз в день (флажок Обновление при открытии файла). Обратите внимание, что весь импортированный диапазон данных воспринимается Excel как единое целое и получает собственное имя, которое можно увидеть в Диспетчере имен на вкладке Формулы (Formulas — Name Manager) .

    Способ 2. Параметрический веб-запрос для получения курса валют на заданный интервал дат

    Этот способ представляет собой слегка модернизированный первый вариант и дает пользователю возможность получать курс нужной валюты не только на текущий день, но и на любую другую интересующую дату или интервал дат. Для этого наш веб-запрос надо превратить в параметрический, т.е. добавить к нему два уточняющих параметра (код нужной нам валюты и текущую дату). Для этого делаем следующее: 1. Создаем веб-запрос (см. способ 1) к странице сайта Центробанка России с архивом курсов: http://cbr.ru/currency_base/dynamics.aspx 2. В форме слева выбираем нужную валюту и задаем начальную и конечную даты: webquery14.png3. Жмем кнопку Получить данные и через пару секунд видим таблицу с нужными нам значениями курса на заданном интервале дат. Прокручиваем полученную таблицу вниз до упора и помечаем ее для импорта, щелкнув по черно-желтой стрелке в левом нижнем углу вебстраницы (только не спрашивайте почему эта стрелка находится там, а не рядом с таблицей — это вопрос к дизайнерам сайта). Теперь ищем в правом верхнем углу окна кнопку с дискетой Сохранить запрос (Save Query) и сохраняем файл с параметрами нашего запроса в любую подходящую папку под любым удобным именем — например в Мои документы под именем cbr.iqy. После этого окно веб-запроса и весь Excel можно пока закрыть. 4. Открываем папку, куда сохранили запрос и ищем файл запроса cbr.iqy, затем щелкаем по нему правой кнопкой мыши — Открыть с помощью — Блокнот (или выбрать его из списка — обычно это файл Notepad.exe из папки C:\Windows). После открытия файла запроса в Блокноте должны увидеть примерно следующее: webquery15.pngСамое ценное здесь — строка с адресом и параметры запроса в ней, которые мы будем подставлять — код нужной нам валюты (выделено красным) и конечная дата, которую мы заменим на сегодняшнюю (выделено синим). Аккуратно редактируем строку, чтобы получилось следующее: http://cbr.ru/currency_base/dynamics.aspx?VAL_NM_RQ= [«Код валюты»] &date_req1=01.01.2000&r1=1&date_req2= [«Дата»] &rt=1&mode=1 Все остальное оставляем как есть, сохраняем и закрываем файл. 5. Создаем новую книгу в Excel, открываем лист, куда хотим импортировать архив курсов ЦБ. В любую подходящую ячейку вводим формулу, которая даст нам текущую дату в текстовом формате для подстановки в запрос: =ТЕКСТ(СЕГОДНЯ();»ДД.ММ.ГГГГ») или в английской версии =TEXT(TODAY(),»dd.mm.yyyy») Куда-нибудь рядом вводим код нужной нам валюты из таблицы:

    Валюта Код
    Доллар США R01235
    Евро R01239
    Фунт стерлингов R01035
    Японская иена R01820

    Нужный код также можно подсмотреть в строке запроса прямо на сайте ЦБ. 6. Загружаем данные на лист, используя в качестве основы созданные ячейки и файл cbr.iqy, т.е. идем на вкладку Данные — Подключения — Найти другие(Data — Existing Connections) . В открывшемся окне выбора источника данных находим и открываем файл cbr.iqy. Перед импортом Excel уточнит у нас три момента. Во-первых, куда импортировать таблицу с данными: webquery16.pngВо-вторых, откуда брать код валюты (можно установить флажок Использовать данное значение по умолчанию(Use this value/reference for future refreshes) , чтобы не указывать потом каждый раз эту ячейку при обновлениях и флажок Автоматически обновлять при изменении значения ячейки(Refresh automatically when cell value changes) : webquery17.pngВ-третьих, из какой ячейки брать конечную дату (тут также можно установить оба флажка, чтобы завтра не пришлось задавать эти параметры вручную при обновлении): webquery18.pngЖмем ОК, ждем пару секунд и получаем полный архив курса нужной валюты на листе: webquery19.pngКак и в первом способе, щелкнув правой кнопкой мыши по импортированным данными и выбрав команду Свойства диапазона (Data range properties) , можно настроить частоту обновления При открытии файла (Refresh on file open) . Тогда при наличии доступа к интернету данные будут автоматически обновляться каждый день, т.е. таблица будет самостоятельно дополняться новыми данными. Вытаскивать из нашей таблицы курс за нужную дату проще всего с помощью функции ВПР(VLOOKUP) — если вы с ней не знакомы, то очень советую сделать это. Вот такой формулой, например, можно выбрать из нашей таблицы курс доллара за 10 января 2000 года: webquery21.pngили в англоязычном варианте =VLOOKUP(E5,cbr,3,1) где

    • E5 — ячейка, где лежит заданная дата
    • cbr — имя диапазона данных (автоматически создается при импорте и обычно совпадает с именем файла запроса)
    • 3 — порядковый номер столбца в нашей таблице, откуда мы берем данные
    • 1 — аргумент, включающий для функции ВПР приблизительный поиск, чтобы можно было находить курсы и для тех промежуточных дат, которые фактически не присутствуют в столбце А (будет браться ближайшая предыдущая дата и ее курс). Подробнее про приблизительный поиск с помощью функции ВПР можно понятно почитать тут.

    Ссылки по теме

    • Макрос для получения курса доллара на заданную дату в текущей ячейке
    • Функция надстройки PLEX для получения курса доллара, евро, гривны, фунта стерлингов и т.д. на любую заданную дату
    • Вставка курса любой валюты на любую дату в надстройке PLEX
  • Добавить комментарий

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