Парсинг котировок в excel

Ранее уже писал про получение данных с Московской биржи через формулы Google Таблиц. Однако остался вопрос — можно ли получать эти же данные при локальном использовании Microsoft Excel или его свободного аналога LibreOffice Calc? Без использования скриптов или ручного копирования.


Microsoft Excel с формулами получения данных с Мосбиржи

И на этот вопрос можно дать положительный ответ. Это даже более удобно, поскольку не приходится ожидать загрузки результатов работы функции IMPORTXML в Гугл Таблицах.

Аналогом этой функции в Excel и Calc выступает связка формул: WEBSERVICE (ВЕБСЛУЖБА) + FILTERXML (ФИЛЬТР.XML).

При работе с Microsoft Excel есть некоторые нюансы:

  • Эти функции доступны только в Excel 2013 и более поздних версиях для Windows.
  • Эти функции не будет возвращать результаты на компьютере Mac.

Для LibreOffice Calc подобных ограничений меньше:

Собрал работоспособный пример «API Мосбиржи в Microsoft Excel.xlsx» с функциями, которые описаны в программном интерфейсе к информационно-статистическому серверу Московской Биржи (ИСС / ISS). Плюс добавил некоторые функции, которые были найдены читателями первой части статьи про гугл таблицы.

Протестировал этот файл в Microsoft Excel 2019 под Windows 10 и в LibreOffice Calc 6.4 под Linux Mint 19.3. Под Mac OS у меня возможности протестировать не было.

API Московской биржи в формулах MS Excel

В общем виде все запросы, которые можно отправить к API Мосбиржи есть в справочнике. Но лично для меня этот справочник до сих пор не особо понятен.

Идентификатор режима торгов

В API Московской биржи очень многое зависит от параметра «Идентификатор режима торгов» (primary_boardid), который можно посмотреть прямо у них на сайте через форму поиска.


Идентификатор режима торгов для акций Тинькофф

Также этот идентификатор можно посмотреть через обычный HTTP-запрос к API:

https://iss.moex.com/iss/securities.xml?q=ТУТ ПИШЕМ НАЗВАНИЕ ИНСТРУМЕНТА ИЛИ ЕГО ЧАСТЬ&iss.meta=off&securities.columns=name,emitent_inn,isin,secid,primary_boardid


Поиск через HTTP-запрос к API Мосбиржи по слову Пермь

Автоматическое получение имени акций, облигаций и ETF

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


Файл «API Мосбиржи в Microsoft Excel.xlsx» с примерами автоматического получения имени для разных классов активов. Корректно работает и в LibreOffice Calc

Автоматическое получение текущих цен

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

Цена предыдущего дня берётся через PREVADMITTEDQUOTE, а не LAST с 15 минутной задержкой, поскольку по некоторым низко ликвидным инструментам через LAST цены может просто не быть.


Файл «API Мосбиржи в Microsoft Excel.xlsx» с примерами автоматического получения имени для разных классов активов. Корректно работает и в LibreOffice Calc

Автоматическое получение дивидендных выплат для акций

Очень удобная функция Мосбиржи, которая позволяет получать не только значение текущей выплаты, но и историю выплат дивидендов вместе с датами и значениями.


Файл «API Мосбиржи в Microsoft Excel.xlsx» с примерами автоматического получения имени для разных классов активов. Корректно работает и в LibreOffice Calc

Автоматическое получение облигационных выплат

По облигациям (не только корпоративным, но также ОФЗ и еврооблигациям) можно автоматически получать дату выплаты следующего купона и его значение.


Файл «API Мосбиржи в Microsoft Excel.xlsx» с примерами автоматического получения имени для разных классов активов. Корректно работает и в LibreOffice Calc

Автоматическое получение дат оферт

Удобно планировать собственные финансы, получая даты оферт (дата, в которую инвестор или эмитент имеют право досрочно погасить облигацию по цене номинала) автоматически.


Файл «API Мосбиржи в Microsoft Excel.xlsx» с примерами автоматического получения имени для разных классов активов. Корректно работает и в LibreOffice Calc

UPD. Пользователь mixei подсказывает, что автоматическое обновление настраивается через Параметры — Центр управления безопасностью — вкладка Внешнее содержимое — там надо поставить все флажки где не рекомендуется :) Но это на страх и риск пользователей.

Итог

API Московской биржи предоставляет широкие возможности, которые гораздо шире чем описанные в данной статье. Это статья своеобразная шпаргалка для долгосрочного частного инвестора, который ведёт учёт в локальном файле на собственном компьютере.

Также хочу отметить, что я никак не связан с Московской биржей и использую ИСС Мосбиржи только в личных интересах.

Автор: Михаил Шардин,

21 апреля 2020 г.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Microsoft Excel или LibreOffice Calc для локального использования?


22.22%
LibreOffice Calc
20

Проголосовали 90 пользователей.

Воздержались 11 пользователей.

39 комментариев

Какое отношение Excel имеет к таблице Google?
Где все-таки расположена неработающая формула? В каком табличном редакторе?
Что творится в ячейке А2?

Много, в общем, вопросов.

avatar

  • 08 февраля 2023, 14:47
  • Ответить

    Еще

Алексей Федоров, а в Excel такие же формулы, если не ошибаюсь.

В A2 находится название тикера.

avatar

  • 08 февраля 2023, 14:55
  • Ответить

    Еще

они в iss какую то трансформацию провели, что на днях все перестало работать. Надо ссылки перестраивать. Еще не разбирался

avatar

  • 08 февраля 2023, 14:52
  • Ответить

    Еще

Андрей К,  в (бондовом, по крайней мере) споте все по-старому (в части структуры url-ов), и все старые баги с расчетными параметрами, увы, на своих местах

avatar

  • 09 февраля 2023, 07:56
  • Ответить

    Еще

flextrader, у нас все послетало нафиг из специфичной инфы. Но свечи работают стабильно ) решил уже на выхах позаниматься.

avatar

  • 09 февраля 2023, 15:09
  • Ответить

    Еще

iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.dp=comma&iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST

avatar

  • 08 февраля 2023, 14:57
  • Ответить

    Еще

Доктор Ливси, не работает или что-то не туда пишу

avatar

  • 08 февраля 2023, 15:01
  • Ответить

    Еще

Доктор Ливси, Замените в своей формуле URL на мой и поменяйте парсинг в формуле concatenate(«//row[@SECID='»,A2,»‘]/@PREVADMITTEDQUOTE» на concatenate(«//row[@SECID='»,A2,»‘]/@LAST»

И имейте ввиду, что мосбиржа выдает котировки с задержкой примерно 15 мин. для запросов без платной подписки.

avatar

  • 08 февраля 2023, 15:07
  • Ответить

    Еще

Доктор Ливси, так и делал. Только Loading пишет и всё.

avatar

  • 08 февраля 2023, 15:15
  • Ответить

    Еще

Доктор Ливси, а можете файл на гугл диск выложить с примером?

avatar

  • 08 февраля 2023, 15:31
  • Ответить

    Еще

Доктор Ливси, =importxml(«https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.dp=comma&iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST»;»//document//data//rows//row[@SECID=’AFKS’]/@LAST»)

avatar

  • 08 февраля 2023, 15:49
  • Ответить

    Еще

Доктор Ливси, друзья, выложите файл с примером плс а ?  уже неск человек просят.

avatar

  • 08 февраля 2023, 18:19
  • Ответить

    Еще

Доктор Ливси, Здесь для проверки указан тикер AFKS, работает. Поменяйте у себя на подстановку тикера из требуемой ячейки.

avatar

  • 08 февраля 2023, 15:51
  • Ответить

    Еще

Доктор Ливси, хмм… Работает только в новой таблице.

avatar

  • 08 февраля 2023, 16:10
  • Ответить

    Еще

Доктор Ливси, Спасибо большое, очень помогли.

avatar

  • 08 февраля 2023, 16:52
  • Ответить

    Еще

avatar

  • 08 февраля 2023, 15:24
  • Ответить

    Еще

hdd, а можете файл на гугл диск выложить с примером?

avatar

  • 08 февраля 2023, 15:31
  • Ответить

    Еще

тупо, конечно, но вставлю свои пять копеек. у меня excel после обновы перестал адрес показывать как «A2». Вместо этого теперь красуется «R2C1», может дело в названии?

avatar

  • 08 февраля 2023, 15:26
  • Ответить

    Еще

Akreg, я читал, что надо PREVADMITTEDQUOTE заменить на PREVLEGALCLOSEPRICE. Но у меня не срабатывает.

avatar

  • 08 февраля 2023, 15:30
  • Ответить

    Еще

Akreg, стиль ссылок в параметрах поменяйте. Галку снять надо

avatar

  • 08 февраля 2023, 17:13
  • Ответить

    Еще

Заметил, что у вас в ссылке https, а у меня http. Я менял в свое время, помогало, попробуйте

avatar

  • 08 февраля 2023, 15:46
  • Ответить

    Еще

avatar

  • 08 февраля 2023, 16:16
  • Ответить

    Еще

у меня тоже через раз грузятся данные. 

avatar

  • 08 февраля 2023, 16:47
  • Ответить

    Еще

Если кому нужно, могу выложить вечером пример для LibreOffice Calc — у меня все работает — получение котировок с Мосбиржи по API бесплатному.

avatar

  • 08 февраля 2023, 17:35
  • Ответить

    Еще

Alexide, скажите, а можно как-то автоматом выгружать данные по открытым позициям юров/физов в ексель, те, которые ещё каждые 5 минут обновляются? Что надо вообще прописать?

avatar

  • 08 февраля 2023, 17:47
  • Ответить

    Еще

Xomyak147, это вроде платный сервис Мосбиржи. Бесплатно они только вчерашние данные показывают. Я не умею извлекать такие данные.

avatar

  • 08 февраля 2023, 18:06
  • Ответить

    Еще

Alexide, не, это бесплатные данные, просто проходите регистрацию и они доступны будут

avatar

  • 08 февраля 2023, 18:22
  • Ответить

    Еще

Alexide, Конечно выкладывайте! У меня Либре Офис на линуксе 

avatar

  • 08 февраля 2023, 18:09
  • Ответить

    Еще

можно попросить код для получения котировки золота? 
=IMPORTXML(«iss.moex.com/iss/engines/currency/markets/selt/securities/GLDRUB_TOM.xml», «/document/data[@id=»«marketdata»»]/rows/row[@BOARDID=«CETS»]/@LAST»)
Так пробовал не получается

avatar

  • 08 февраля 2023, 17:51
  • Ответить

    Еще

avatar

  • 24 февраля 2023, 16:53
  • Ответить

    Еще

Алексей Заказников, Подскажи, пожалуйста, код для получения курса евро и доллара.
в приведенном выше коде пробовал менять GLDRUB_TOM на USDRUB_TOM, не получается

avatar

  • 12 марта 2023, 12:14
  • Ответить

    Еще

avatar

  • 08 февраля 2023, 19:18
  • Ответить

    Еще

Да что за WTF? Ежедневно вношу какие-то изменения в ссылки в Google Sheets. Начинает работать, на след день открываешь рабочий файл, — опять ошибки. Че происходит-то
 

avatar

  • 09 февраля 2023, 20:16
  • Ответить

    Еще

avatar

  • 28 февраля 2023, 09:38
  • Ответить

    Еще

Для таблиц Google:
=ImportXML(CONCATENATE(«https://www.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities/»,C5,».xml?iss.meta=off&iss.only=marketdata&securities.columns=LAST»),»/document/data/rows/row/@LAST»)

где С5 — это тикер.

Для Excel:
=ФИЛЬТР.XML(ВЕБСЛУЖБА(СЦЕПИТЬ(«https://www.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities/»;C5;».xml?iss.meta=off&iss.only=marketdata&securities.columns=LAST»));»//document//data//rows//row/@LAST»)

avatar

  • 17 марта 2023, 17:33
  • Ответить

    Еще

Дайте совет, как сделать, чтобы котировки в экселе обновлялись автоматически? Приходится нажимать F2+Enter. Параметр автоматического расчета для формул включен.
Значение в ячейке такое: =ПОДСТАВИТЬ( ФИЛЬТР.XML(ВЕБСЛУЖБА(«iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.dp=comma&iss.meta=off&iss.only=marketdata&marketdata.columns=SECID,LAST»);»//document//data//rows//row[@SECID=’SBER’]/@LAST»);».»;»,»)

avatar

  • 04 апреля 2023, 21:10
  • Ответить

    Еще

  • https://ExcelVBA.ru/sites/default/files/parsers/crypto_rates.jpg

Задача: 

Обновление котировок в таблице Excel с 3 бирж криптовалют: binance.com, wex.nz, bitfenix.com

Описание: 

У каждого из трех парсеров свой лист в файле с названием «rates».
При запуске, каждый парсер открывает файл с названием «rates», и на соответствующий лист выводит данные.

Общий парсер с названием «All Coin» просто запускает все эти три парсера по очереди.

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

  • 5814 просмотров

Файлы к уроку:

  • Для спонсоров Boosty
  • Для спонсоров VK

Ссылки:

  • Страница курса
  • Плейлист YouTube
  • Плейлист ВК

Описание

В этом уроке мы научимся получать прямо в Excel котировки разных ценных бумаг с сайта Московской биржи.

Решение

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

Если мы введем такую ссылку в Power Query, создав запрос из интернета, то получим интересующие нас котировки прямо в Excel.

Вот ссылка на сайте Московской биржи https://iss.moex.com/iss/reference/ На этой странице вы можете увидеть какую именно информацию вы можете получить с сайта Московской биржи. Котировками дело не ограничивается.

Все ссылки конструируются примерно по одному шаблону. В этом примере мы разберем получение котировок при помощи Power Query, но если вам нужна какая-то другая информация, то вы по аналогии сможете создать похожую ссылку.

Наша ссылка будет выглядеть так — https://iss.moex.com/iss/history/engines/stock/markets/shares/securities/SBER/securities.xml

В том месте, где написано SBER нужно вставить тикер интересующей вас ценной бумаги. Далее, развернув таблицу, вы получите таблицу с котировками, но только 100 строк. Это максимальное количество, которое позволено выгружать. Нам нужно что-то придумать, чтобы выгружать больше строк.

Что делать, чтобы получить много строк? Нужно использовать параметр start. Мы создадим столбец с числами с инкрементом 100 и в каждой строке будем запрашивать информация по ссылке.

Примененные функции

  • Xml.Tables
  • Web.Contents
  • List.Numbers
  • Table.FromList
  • Splitter.SplitByNothing
  • ExtraValues.Error
  • Table.AddColumn
  • Text.From
  • Table.SelectColumns
  • Table.ExpandTableColumn
  • Table.TransformColumnNames
  • Text.AfterDelimiter

Код

Пример получения 100 строк:

let
   source = Xml.Tables(
      Web.Contents(
         "http://iss.moex.com/iss/history/engines/stock/markets/shares/securities/SBER/securities.xml?start=300"
      )
   ){0}[Table]{0}[rows]{0}[row]
in
   source

Пример получения 4000 строк:

let
   source = List.Numbers(1, 40, 100),
   to_table = Table.FromList(
      source,
      Splitter.SplitByNothing(),
      null,
      null,
      ExtraValues.Error
   ),
   table_add_col = Table.AddColumn(
      to_table,
      "Пользовательская",
      each Xml.Tables(
         Web.Contents(
            "http://iss.moex.com/iss/history/engines/stock/markets/shares/securities/SBER/securities.xml?start="
               & Text.From([Column1])
         )
      ){0}[Table]{0}[rows]{0}[row]
   ),
   cols_select = Table.SelectColumns(table_add_col, {"Пользовательская"}),
   col_expand_table = Table.ExpandTableColumn(
      cols_select,
      "Пользовательская",
      {
         "Attribute:BOARDID",
         "Attribute:TRADEDATE",
         "Attribute:SHORTNAME",
         "Attribute:SECID",
         "Attribute:NUMTRADES",
         "Attribute:VALUE",
         "Attribute:OPEN",
         "Attribute:LOW",
         "Attribute:HIGH",
         "Attribute:LEGALCLOSEPRICE",
         "Attribute:WAPRICE",
         "Attribute:CLOSE",
         "Attribute:VOLUME",
         "Attribute:MARKETPRICE2",
         "Attribute:MARKETPRICE3",
         "Attribute:ADMITTEDQUOTE",
         "Attribute:MP2VALTRD",
         "Attribute:MARKETPRICE3TRADESVALUE",
         "Attribute:ADMITTEDVALUE",
         "Attribute:WAVAL"
      },
      {
         "Attribute:BOARDID",
         "Attribute:TRADEDATE",
         "Attribute:SHORTNAME",
         "Attribute:SECID",
         "Attribute:NUMTRADES",
         "Attribute:VALUE",
         "Attribute:OPEN",
         "Attribute:LOW",
         "Attribute:HIGH",
         "Attribute:LEGALCLOSEPRICE",
         "Attribute:WAPRICE",
         "Attribute:CLOSE",
         "Attribute:VOLUME",
         "Attribute:MARKETPRICE2",
         "Attribute:MARKETPRICE3",
         "Attribute:ADMITTEDQUOTE",
         "Attribute:MP2VALTRD",
         "Attribute:MARKETPRICE3TRADESVALUE",
         "Attribute:ADMITTEDVALUE",
         "Attribute:WAVAL"
      }
   ),
   types = Table.TransformColumnNames(
      col_expand_table,
      each Text.AfterDelimiter(_, ":")
   )
in
   types

Этот урок входит в курс Веб-запросы в Power Query

Номер урока Урок Описание
1 Котировки Yahoo Finance Вы хотите получить историю котировок акций MCD с 2000 года по текущий день с сайта Yahoo Finance. Вы копируете ссылку на раздел с историческими данными, вставляете ссылку в Power Query и получаете только 100 строк.
2 HTML, получение данных по облигациям Мы хотим получить данные по всем облигациям со страницы bonds.finam.ru
3 Многостраничное извлечение На разных страницах находятся сайта находятся котировки золота на каждый год. Нужно соединить все данные в одну таблицу.
4 JSON, Котировки Yahoo Finance 2 В этом уроке мы разберем еще один способ скачивания котировок с Yahoo Finance. Этот способ намного удобнее и быстрее. Здесь мы научимся обрабатывать формат JSON.
5 Котировки Московской биржи В этом уроке мы научимся получать прямо в Excel котировки разных ценных бумаг с сайта Московской биржи.
Московская биржа предоставляет возможность скачивать котировки и другую информацию по ценным бумагам при помощи специальных ссылок.
Если мы введем такую ссылку в Power Query, создав запрос из интернета, то получим интересующие нас котировки прямо в Excel.
6 Неразмеченный текст Вы делаете запрос к Web-странице и сталкиваетесь с неразмеченным текстом. Вы хотите при помощи Power Query этот неразмеченный текст преобразовать в нормальную красивую таблицу.
7 Текстовый документ, веб-страница, List.Zip В этом запросе мы научимся получать нужную информацию из текста веб-страницы.
8 Youtube Data API В этом уроке мы научимся получать данные из Youtube Data API. Узнаем как получить данные о Youtube канале: список видео и плейлистов, названия, описания, длительность, тэги, количество лайков, дизлайков, просмотров и комментариев.
9 Личный OneDrive — подключаемся напрямую к файлам и папкам В этом уроке мы разберем как напрямую подключиться к файлам и папкам на личном OneDrive.
10 Подключение Google Spreadsheets, Google Drive (Excel.Workbook, Web.Contents) В этом уроке мы научимся подключаться к xlsx файлам, которые находятся в вашем Google Drive.
11 Получить все станции метро Получим таблицу с перечнем станций метрополитена даже с координатами широты и долготы.
12 Получить ссылки с веб-страницы (Html.Table) Получить URL с веб-страницы. Сделать запрос к каждому URL, получить таблицы и объединить их всех по вертикали.
13 Получить все URL с веб-страницы Получим нужные URL с веб-страницы в Excel. Сделать запрос к каждому URL, получить таблицы и объединить их по вертикали.
14 Ищем работу через API Head Hunter (hh.ru) Получим таблицу с перечнем вакансий с сайте HH. Получим вакансии, в названии или описании которых встречаются слова SQL, Pandas, Power Query, Power Pivot, Power BI.
15 Запрос к XML Sitemap Сделаем запрос к sitemap.xml, чтобы извлечь список всех веб-страниц сайта.

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

Импорт курса заданной валюты из интернета с автоматическим обновлением — весьма частая задача для многих пользователей 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.png

3. Жмем кнопку Получить данные и через пару секунд видим таблицу с нужными нам значениями курса на заданном интервале дат. Прокручиваем полученную таблицу вниз до упора и помечаем ее для импорта, щелкнув по черно-желтой стрелке в левом нижнем углу вебстраницы (только не спрашивайте почему эта стрелка находится там, а не рядом с таблицей — это вопрос к дизайнерам сайта).

Теперь ищем в правом верхнем углу окна кнопку с дискетой Сохранить запрос (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

Понравилась статья? Поделить с друзьями:
  • Парсинг интернет магазинов в excel
  • Парсинг интернет магазина в excel
  • Пароль на редактирование excel 2007
  • Пароль на папку excel
  • Пароль на открытие файла word 2016