Как вставить курс криптовалют в excel
Предположим, что вы проявили деловое чутье и интуицию и закупили несколько порций какой-нибудь криптовалюты (того же биткойна, например) в прошлом. В виде умной таблицы ваш "инвестиционный портфель" выглядит, допустим, так:
Задача: оперативно оценивать текущую стоимость ваших инвестиций по текущему курсу криптовалюты. Курс будем брать в интернете с любого подходящего сайта (биржи, обменника) и усреднять для достоверности.
Один из вариантов решения - классический веб-запрос - я уже подробно рассматривал на примере импорта курса валют. Теперь же давайте попробуем, для разнообразия, использовать другой способ - надстройку Power Query, которая идеально подходит для импорта данных в Excel из внешнего мира, в том числе, и из интернета.
Выбираем сайт для импорта
С какого именно сайта будем брать данные - это, по большому счету, не принципиально. Классический веб-запрос Excel весьма требователен к структуре и внутренней конструкции импортируемой веб-страницы и, бывает, срабатывает не на каждом сайте. Power Query в этом вопросе гораздо более всеяден. Так что можно взять средний курс покупки на выбор:
Теперь нужно скопировать адрес появившейся страницы в буфер, т.к. он содержит все необходимые нам параметры запроса:
Дальше дело за Power Query.
Импортируем курс в Excel через Power Query
Если у вас Excel 2010-2013 и Power Query установлена как отдельная надстройка, то нужная нам команда находится на одноименной вкладке - Power Query. Если у вас Excel 2016, то на вкладке Данные (Data) жмем кнопку Из интернета (From Internet) . В появившееся затем окно нужно вставить скопированный адрес веб-страницы из предыдущего пункта и нажать ОК:
После анализа веб-страницы Power Query выдаст окно со списком таблиц, которые можно импортировать. Нужно найти требуемую таблицу в списке слева (их там бывает несколько), ориентируясь на предпросмотр справа, и нажать затем внизу кнопку Правка (Edit) :
После этого откроется главное окно редактора запросов Power Query, в котором мы сможем отобрать только нужные строки и усреднить по ним курс покупки:
Рекомендую сразу переименовать наш запрос в панели справа, дав ему какое-нибудь вменяемое имя:
Фильтруем и зачищаем данные
В дальнейшем нам нужны будут только столбцы с описанием Payment method и курсом покупки Price / BTC - так что можно смело выделить их оба с Ctrl и, щелкнув по ним правой кнопкой мыши, выбрать команду Удалить другие столбцы (Remove other columns) - будут удалены все столбцы кроме выделенных.
Допустим, что мы хотим отобрать только тех трейдеров, которые работают через Сбербанк. Фильтр - штука знакомая, но нюанс в том, что фильтр в Power Query чувствителен к регистру, т.е. Сбербанк, СБЕРБАНК и СберБанк для него не одно и то же. Поэтому, прежде чем отбирать нужные строки, давайте приведем регистр всех описаний к одному виду. Для этого нужно выделить столбец Payment method и на вкладке Преобразование выбрать команду Форматировать - нижний регистр (Transform - Format - Lower case) :
Теперь отфильтруем по столбцу Payment method с использованием опции Текстовые фильтры - Содержит (Text filters - Contains) :
В окне фильтра сразу переключаемся сверху в режим Дополнительно (Advanced) и вводим три правила для отбора:
Как легко догадаться, этим мы отбираем все строки, где присутствует слово "сбер" на русском или английском, плюс тех, кто работает через любой банк. Не забудьте установить слева логическую связку Или (OR) вместо И (And) - иначе правило не сработает корректно. После нажатия на ОК на экране должны остаться только нужные нам варианты:
Теперь удаляем столбец Payment method правой кнопкой мыши по заголовку столбца - Удалить столбец (Remove column) и работаем дальше уже с оставшимся единственным столбцом курсов:
Проблема с ним в том, что там, кроме числа, лежит еще и обозначение валюты. Это можно легко вычистить простой заменой, щелкнув по заголовку столбца правой кнопкой мыши и выбрав команду Замена значений (Replace values) :
Получившиеся после удаления RUB числа, на самом деле, тоже еще не числа, т.к. в них используются нестандартные разделители. Это можно вылечить, нажав в шапке таблицы кнопку формата и выбрав затем опцию Используя локаль (Use locals) :
Наиболее подходящей будет локаль Английский (США) и тип данных - Десятичное число:
После нажатия на ОК мы получим полноценные числовые значения курсов покупки:
Останется посчитать по ним среднее на вкладке Трансформация - Статистика - Среднее (Transform - Statistics - Average) и выгрузить получившееся число на лист командой Главная - Закрыть и загрузить - Закрыть и загрузить в. (Home - Close & Load - Close & Load To. ) :
Теперь можно добавить ссылку на загруженный курс в формулу к нашей таблице портфеля и посчитать разницу в стоимости по всем нашим инвестициям на текущий момент:
Теперь можно периодически открывать этот файл, щелкать правой кнопкой мыши по запросу и, выбрав команду Обновить (Refresh) , наблюдать изменения, которые автоматически будут подгружаться в нашу таблицу.
Как легко сообразить, совершенно аналогичным образом можно импортировать курс не только биткойна, но и любой другой валюты, акции или ценной бумаги. Главное - найти подходящий сайт и построить запрос, а дальше все сделает умный Power Query.
Предположим, что вы проявили деловое чутье и интуицию и закупили несколько порций какой-нибудь криптовалюты (того же биткойна, например) в прошлом. В виде умной таблицы ваш "инвестиционный портфель" выглядит, допустим, так:
Задача: оперативно оценивать текущую стоимость ваших инвестиций по текущему курсу криптовалюты. Курс будем брать в интернете с любого подходящего сайта (биржи, обменника) и усреднять для достоверности.
Один из вариантов решения - классический веб-запрос - я уже подробно рассматривал на примере импорта курса валют. Теперь же давайте попробуем, для разнообразия, использовать другой способ - надстройку Power Query, которая идеально подходит для импорта данных в Excel из внешнего мира, в том числе, и из интернета.
Выбираем сайт для импорта
С какого именно сайта будем брать данные - это, по большому счету, не принципиально. Классический веб-запрос Excel весьма требователен к структуре и внутренней конструкции импортируемой веб-страницы и, бывает, срабатывает не на каждом сайте. Power Query в этом вопросе гораздо более всеяден. Так что можно взять средний курс покупки на выбор:
Теперь нужно скопировать адрес появившейся страницы в буфер, т.к. он содержит все необходимые нам параметры запроса:
Дальше дело за Power Query.
Импортируем курс в Excel через Power Query
Если у вас Excel 2010-2013 и Power Query установлена как отдельная надстройка, то нужная нам команда находится на одноименной вкладке - Power Query. Если у вас Excel 2016, то на вкладке Данные (Data) жмем кнопку Из интернета (From Internet) . В появившееся затем окно нужно вставить скопированный адрес веб-страницы из предыдущего пункта и нажать ОК:
После анализа веб-страницы Power Query выдаст окно со списком таблиц, которые можно импортировать. Нужно найти требуемую таблицу в списке слева (их там бывает несколько), ориентируясь на предпросмотр справа, и нажать затем внизу кнопку Правка (Edit) :
После этого откроется главное окно редактора запросов Power Query, в котором мы сможем отобрать только нужные строки и усреднить по ним курс покупки:
Рекомендую сразу переименовать наш запрос в панели справа, дав ему какое-нибудь вменяемое имя:
Фильтруем и зачищаем данные
В дальнейшем нам нужны будут только столбцы с описанием Payment method и курсом покупки Price / BTC - так что можно смело выделить их оба с Ctrl и, щелкнув по ним правой кнопкой мыши, выбрать команду Удалить другие столбцы (Remove other columns) - будут удалены все столбцы кроме выделенных.
Допустим, что мы хотим отобрать только тех трейдеров, которые работают через Сбербанк. Фильтр - штука знакомая, но нюанс в том, что фильтр в Power Query чувствителен к регистру, т.е. Сбербанк, СБЕРБАНК и СберБанк для него не одно и то же. Поэтому, прежде чем отбирать нужные строки, давайте приведем регистр всех описаний к одному виду. Для этого нужно выделить столбец Payment method и на вкладке Преобразование выбрать команду Форматировать - нижний регистр (Transform - Format - Lower case) :
Теперь отфильтруем по столбцу Payment method с использованием опции Текстовые фильтры - Содержит (Text filters - Contains) :
В окне фильтра сразу переключаемся сверху в режим Дополнительно (Advanced) и вводим три правила для отбора:
Как легко догадаться, этим мы отбираем все строки, где присутствует слово "сбер" на русском или английском, плюс тех, кто работает через любой банк. Не забудьте установить слева логическую связку Или (OR) вместо И (And) - иначе правило не сработает корректно. После нажатия на ОК на экране должны остаться только нужные нам варианты:
Теперь удаляем столбец Payment method правой кнопкой мыши по заголовку столбца - Удалить столбец (Remove column) и работаем дальше уже с оставшимся единственным столбцом курсов:
Проблема с ним в том, что там, кроме числа, лежит еще и обозначение валюты. Это можно легко вычистить простой заменой, щелкнув по заголовку столбца правой кнопкой мыши и выбрав команду Замена значений (Replace values) :
Получившиеся после удаления RUB числа, на самом деле, тоже еще не числа, т.к. в них используются нестандартные разделители. Это можно вылечить, нажав в шапке таблицы кнопку формата и выбрав затем опцию Используя локаль (Use locals) :
Наиболее подходящей будет локаль Английский (США) и тип данных - Десятичное число:
После нажатия на ОК мы получим полноценные числовые значения курсов покупки:
Останется посчитать по ним среднее на вкладке Трансформация - Статистика - Среднее (Transform - Statistics - Average) и выгрузить получившееся число на лист командой Главная - Закрыть и загрузить - Закрыть и загрузить в. (Home - Close & Load - Close & Load To. ) :
Теперь можно добавить ссылку на загруженный курс в формулу к нашей таблице портфеля и посчитать разницу в стоимости по всем нашим инвестициям на текущий момент:
Теперь можно периодически открывать этот файл, щелкать правой кнопкой мыши по запросу и, выбрав команду Обновить (Refresh) , наблюдать изменения, которые автоматически будут подгружаться в нашу таблицу.
Как легко сообразить, совершенно аналогичным образом можно импортировать курс не только биткойна, но и любой другой валюты, акции или ценной бумаги. Главное - найти подходящий сайт и построить запрос, а дальше все сделает умный Power Query.
Импорт курса заданной валюты из интернета с автоматическим обновлением - весьма частая задача для многих пользователей Microsoft Excel. Представьте, что у вас есть прайс-лист, который должен пересчитываться каждое утро в соответствии с курсом. Или бюджет проекта. Или стоимость договора, которую надо посчитать, используя курс доллара на дату заключения договора.
В подобных ситуациях можно решить проблему по разному - всё зависит от того, какая версия Excel у вас установлена и какие надстройки поверх неё стоят.
Способ 1. Простой веб-запрос для текущего курса валют
Этот способ подойдет тем, у кого на компьютере пока ещё старые версии Microsoft Office 2003-2007. Он не использует никаких сторонних надстроек или макросов и оперирует только встроенными функциями.
Когда страница загрузится, то на таблицах, которые Excel может импортировать, появятся черно-желтые стрелки. Щелчок по такой стрелке помечает таблицу для импорта.
Когда все необходимые таблицы помечены - нажмите кнопку Импорт (Import) внизу окна. Спустя некоторое время, нужное для загрузки данных, содержимое отмеченных таблиц появится в ячейках на листе:
Для дополнительной настройки можно щелкнуть по любой из этих ячеек правой кнопкой мыши и выбрать в контекстном меню команду Свойства диапазона (Data range properties) . В этом диалоговом окне, при желании, возможно настроить периодичность обновления и другие параметры:
Котировки акций, т.к. они меняются каждые несколько минут, можно обновлять почаще (флажок Обновлять каждые N мин.), а вот курсы валют, в большинстве случаев, достаточно обновлять раз в день (флажок Обновление при открытии файла).
Обратите внимание, что весь импортированный диапазон данных воспринимается Excel как единое целое и получает собственное имя, которое можно увидеть в Диспетчере имен на вкладке Формулы (Formulas - Name Manager) .
Способ 2. Параметрический веб-запрос для получения курса валют на заданный интервал дат
Этот способ представляет собой слегка модернизированный первый вариант и дает пользователю возможность получать курс нужной валюты не только на текущий день, но и на любую другую интересующую дату или интервал дат. Для этого наш веб-запрос надо превратить в параметрический, т.е. добавить к нему два уточняющих параметра (код нужной нам валюты и текущую дату). Для этого делаем следующее:
2. В форме слева выбираем нужную валюту и задаем начальную и конечную даты:
3. Жмем кнопку Получить данные и через пару секунд видим таблицу с нужными нам значениями курса на заданном интервале дат. Прокручиваем полученную таблицу вниз до упора и помечаем ее для импорта, щелкнув по черно-желтой стрелке в левом нижнем углу вебстраницы (только не спрашивайте почему эта стрелка находится там, а не рядом с таблицей - это вопрос к дизайнерам сайта).
Теперь ищем в правом верхнем углу окна кнопку с дискетой Сохранить запрос (Save Query) и сохраняем файл с параметрами нашего запроса в любую подходящую папку под любым удобным именем - например в Мои документы под именем cbr.iqy. После этого окно веб-запроса и весь Excel можно пока закрыть.
4. Открываем папку, куда сохранили запрос и ищем файл запроса cbr.iqy, затем щелкаем по нему правой кнопкой мыши - Открыть с помощью - Блокнот (или выбрать его из списка - обычно это файл Notepad.exe из папки C:\Windows). После открытия файла запроса в Блокноте должны увидеть примерно следующее:
Самое ценное здесь - строка с адресом и параметры запроса в ней, которые мы будем подставлять - код нужной нам валюты (выделено красным) и конечная дата, которую мы заменим на сегодняшнюю (выделено синим). Аккуратно редактируем строку, чтобы получилось следующее:
Все остальное оставляем как есть, сохраняем и закрываем файл.
5. Создаем новую книгу в Excel, открываем лист, куда хотим импортировать архив курсов ЦБ. В любую подходящую ячейку вводим формулу, которая даст нам текущую дату в текстовом формате для подстановки в запрос:
Основным источником данных о котировках будут служить биржи - Kraken, Binance, Poliniex, Bitterex и прочие. Что их объединяет? Ответ прост - API (application programming interface, программный интерфейс приложения, если по-русски).
Самое забавное, что к этому интерфейсу нельзя обратиться с помощью простого web запроса в Excel. Как мы это делали раньше. Выход есть - использовать Power Query.
Power Query - это специальная технология получения и анализа данных от компании Microsoft. Для Excel 2016 её отдельная установка не требуется (пакет уже включён в программу), для всех остальных версий придётся качать отдельно, также нужно обратить внимание на разрядность вашего офиса (х32, х64).
Скачали, установили и теперь в Excel появится новая вкладка - POWER QUERY.
Вкладка выглядит следующим образом:
В принципе можно рассматривать Power Query как надстройку над вкладкой "Данные", так как у нас расширяется выбор источников получения данных.
Ну что ж, теперь перейдём непосредственно к загрузке. Цель - получить соотношение покупки продажи криптвалютных пар (ETH/BTC). К примеру, нужно загрузить курс с биржи Binance.
Весь труд будет в следующем - найти API биржи и его "руководство пользователя". Для нашей биржи оно находится по адресу:
Базовой точкой входа будет:
И далее идёт пространное описание возможностей синтаксиса. Экспериментальным путём и опираясь на это руководство пользователя, выяснилось следующее: для получения данных по конкретной паре валют необходимо указать путь до "бегущей строки" биржи и прописать символьное обозначение пары.
- v3 - версия api биржи;
- ticker - "бегущая строка" котировок;
- price?symbol=ETHBTC - текущая стоимость продажи.
Воспользуемся полученной ссылкой. Переходим на вкладку "Power Query" и нажимаем кнопку "Из интернета" (она самая первая). Перед нами появится окно с запросом источника загрузки данных, в поле "URL адрес" записываем адрес интересующей пары. Для загрузки остальных нужно просто поменять краткие названия криптовалют в конце строки.
Нажимаем "ОК" и попадаем в редактор запроса и представления на листе Excel.
Видим, появился редактор, данные и параметры запроса. Мы находимся на вкладке "Конвертировать". Перейдём на вкладку "Просмотр" и поставим галку "Строка формул", чтобы видеть запрос в привычном представлении.
Возвращаемся на вкладку "Конвертировать" и нажимаем кнопку "В таблицу".
Поскольку нам ничего пока больше не нужно, в появившемся окне нажимаем "Закрыть и загрузить", чтобы данный запрос появился на листе.
В результате получим вот такую картину.
Цель достигнута, курсы подгрузились. Теперь нужно настроить их на автоматическое обновление. Справа у нас есть столбец "Параметры запроса", щелкаем правой кнопкой мышки по нашем запросу и выбираем "Свойства", ставим галку "Быстрая загрузка" -> Ок.
Далее мы оказываемся на вкладке "Конструктор", в блоке кнопок "Данные из внешней таблицы" щёлкаем по треугольнику после кнопки "Обновить", затем выбираем пункт "Свойства подключения". В следующем окне нужно настроить время обновления нашего запроса.
Проставляем галки как на рисунке. Тем самым мы добиваемся автоматического обновления котировок в течение одной минуты, а если нам нужно - можем обновить сами по нажатию кнопки. Нажимаем "ОК".
Готово! Ждём минуту, курс обновляется сам. Теперь котировки будут подгружаться автоматически.
Единственный минус - для большого количества запросов придётся всё создавать ручками, что в свою очередь будет сильно нагружать программу Excel при обновлении курсов криптовалют.
Сегодня создадим макрос, который будет обновлять курсы при открытии рабочей книги.
Пойдём стандартным путем, сначала загрузим курсы валют через "Данные" - > "Из интернета" (сразу оговорюсь, данный способ опробован на сайте worldcoinicons.com, где можно отметить таблицу с курсами, но макрос, который будет ниже, подойдёт и для загрузки через XML с сайта Центрального банка России). Отмечаем галкой таблицу с курсами и жмём "Импорт", затем "ОК" (когда спросит в какую ячейку помещать курсы валют).
Теперь получим вот такую картину.
А вот теперь нам понадобится вкладка "Разработчик", где жмём кнопку "Visual Basic".
Теперь нам нужно для активного листа создать модуль и имя процедуры, которую будем вызывать при открытии книги. Жмём "Insert" -> "Module".
В тексте модуля пишем следующий текст:
Sub BTC()
ActiveWorkbook.RefreshAll
End Sub
Тем самым мы создали команду обновления всей книги (имя команды в моём случае BTC, вы можете написать что угодно!).
Далее переходим в пункту в левом меню "Эта книга" ( двойным щелчком), в поле "Object" выбираем "Workbook", в поле "Procedure" у нас само появится "Open", т.е. при открытии, далее пишем вызов команды BTC. которая и будет обновлять курс валюты.
Private Sub Workbook_Open()
Call BTC
End Sub
Тем самым мы вызываем созданную выше команду.
БУДЬТЕ ОЧЕНЬ ВНИМАТЕЛЬНЫ! Когда будете сохранять книгу выбираем тип книги .xlsm в окне сохранения иначе макросы не сохранятся!
Осталось проверить, как работает наш макрос. Для этого открываем книгу и обращаем внимание вверх, там будет кнопка "Включить содержимое", щёлкаем её, а затем смотрим в нижний левый угол программы. Там будет следующая картина.
Идёт фоновый запрос. Значит макрос работает и мы увидим обновлённый курс валют. Также хочу отметить, что иногда обновление занимает много времени (особенно с загрузкой XML данных), наберитесь терпения и всё будет хорошо!
Если что-то было непонятно - смотрим видео! Не забывайте писать комментарии и подписываться на канал!
Читайте также: