Содержание
Импорт курсов валюты в Excel
Готовые решения »
Надстройка VBA-Excel »
Курс валюты
Для кого-то сайт cbr.ru ничего не говорит, а кто-то заходит туда каждый день и не раз. Для того чтобы импорт курса валюты на любую дату занимал у вас максимум секунд 10 создан данный макрос.
Добавить в Excel
Описание работы
Один из самых эффективных способов вставить курс валюты с сайта ЦБ в ячейку Excel — использовать надстройку с макросом. После установки программы VBA-Excel у вас появится новая вкладка на ленте с командой вызова функции Курс валюты.
Эта команда открывает удобную форму для импорта курса на заданную дату.
Выбор даты импорта
На форме имеется встроенный календарь для выбора даты на которую импортируется курс валюты. По умолчанию выбрана текущая дата.
Установить текущую дату можно также нажав на кнопку Сегодня в календаре
Выбор валюты
Далее необходимо указать курс какой валюты необходимо импортировать. Для этого кликните по нужной строке в списке.
Для выбора доступны все валюты с сайта ЦБ РФ. Для удобства самые популярные курсы доллара и евро вынесены в начало списка. Остальные отсортированы по алфавиту.
Выбор единицы расчета
Обратите внимание, что не все курсы валют берутся из расчета за 1 единицу. Например, для Армянских драммов расчет ведется за 100 единиц. Если необходимо, чтобы курс вставлялся за 1 единицу, то установите опцию В расчете за 1 единицу валюты в нижнем левом углу.
Тип вставки
Если вы не планируете обновлять курс валюты в дальнейшем, то советую вставлять курс валюты «текстом» тогда Excel не будет обращаться к сайту ЦБ для обновления данных. Для этого нажмите кнопку Вставка текстом.
Если вы хотите периодически обновлять курс (например на текущую дату), то используйте кнопку Вставить формулой. В этом случае в выбранную ячейку вставится функция КУРС с установленными параметрами.
Использовать функцию КУРС
Вставить курс валюты Вызвать функцию можно с помощью функции. Использовать ее можно так же как и любую другую встроенную в Excel — просто введите в ячейку =КУРС([Дата]; [ВАЛЮТА]; [За1ед]).
- [Дата] — Дата, на которую необходимо определить валюту. По умолчанию текущая дата.
- [ВАЛЮТА] — Текст, определяющий код валюты в соответствии с сайтом cbr.ru. По умолчанию USD.
- [За1ед] — Не все курсы валют на сайте Центробанка указываются за 1 единицу валюты. Чтобы валюта рассчитывалась из расчета за 1 единицу укажите значение этой переменной = 1
Само собой необходим интернет для пользования данной функцией. Прошу не мучить свой компьютер, интернет и не делать выгрузку курсов за большой период времени, для этого на сайте Центробанка есть специальный функционал.
Пример 1
Получение курса USD на сегодня.
Пример 2
Получение различных курсов валют на сегодня.
Пример 3
Получение динамики курса доллара за 5 дней.
Пример 4
Получение курсов валюты из расчета за 1 единицу валюты на текущую дату.
Надстройка
VBA-Excel
Надстройка для Excel содержит большой набор полезных функций, с помощью которых вы значительно сократите время и увеличите скорость работы с программой.
Добавить в Excel
Рекомендуем к прочтению
Формула для расчета НДС в Excel
Сумма прописью в excel
Импорт текста из интернет страницы в Excel
Средний курс валюты за период в Excel
Комментарии:
Please enable JavaScript to view the comments powered by Disqus.comments powered by Disqus
Курс доллара ЦБ РФ на 31 октября 2022
61,5343 ₽за 1 доллар
- USD
- EUR
- CNY
- Выбрать валюту
- курс доллара на сегодня
- курс доллара на завтра
- архив
- конвертер
Изменение курса доллара
за день | 0,0000 | 0,00% | |
с начала недели | 0,0000 | 0,00% | |
с начала месяца | ↑ | +6,2356 | +11,28% |
за 30 дней | ↑ | +6,2356 | +11,28% |
с начала года | ↓ | −12,7583 | −17,17% |
График курса доллара ЦБ РФ
Конвертер валют
по курсу ЦБРФ на 31-10-2022
все валюты
Таблица изменений курса доллара ЦБ
c 27. 10.2022 по 05.11.2022
Дата | Курс | Изм. | Изм.,% |
---|---|---|---|
05.11.2022 | 62,0955 | 0,0000 | 0,00% |
04.11.2022 | 62,0955 | +0,4780↑ | +0,78%↑ |
03.![]() | 61,6175 | +0,1900↑ | +0,31%↑ |
02.11.2022 | 61,4275 | −0,1954↓ | −0,32%↓ |
01.![]() | 61,6229 | +0,0886↑ | +0,14%↑ |
31.10.2022 | 61,5343 | 0,0000 | 0,00% |
30.![]() | 61,5343 | 0,0000 | 0,00% |
29.10.2022 | 61,5343 | +0,1754↑ | +0,29%↑ |
28.![]() | 61,3589 | −0,0688↓ | −0,11%↓ |
27.10.2022 | 61,4277 | +0,0951↑ | +0,16%↑ |
Валюта | Курс | |
---|---|---|
1 | новый румынский лей | 12,4690 |
10 | гривен | 16,6874 |
10 | шведских крон | 55,9210 |
1 | болгарский лев | 31,5787 |
1000 | южнокорейских вон | 43,2883 |
1 | сдр (специальные права заимствования) | 79,4032 |
100 | иен | 41,9743 |
1 | канадский доллар | 45,4228 |
100 | киргизских сомов | 73,9168 |
1 | сингапурcкий доллар | 43,7748 |
10 | чешских крон | 25,1736 |
10 | южноафриканских рэндов | 33,9933 |
1 | азербайджанский манат | 36,1966 |
10 | китайских юаней | 84,3159 |
10 | гонконгских долларов | 78,5377 |
10000 | узбекских сумов | 55,0823 |
1 | евро | 61,1328 |
1 | новый туркменский манат | 17,5812 |
100 | армянских драмов | 15,5574 |
100 | венгерских форинтов | 14,8469 |
1 | австралийский доллар | 39,8065 |
vba api очистка веб-сайта за заданный период валютных курсов
Моя функция ExchangeRatesCbr
возвращает четырехмерный массив перечисленных валют и их текущий обменный курс:
' Получить текущие обменные курсы от Центрального банка Российской ' Федерация, использующая российский рубль в качестве базовой валюты.' Ставки возвращаются в виде массива и кэшируются до следующего обновления. Курсы обновляются один раз в день примерно в 13:00 UTC. ' ' Источник: ' https://cbr.ru/eng/currency_base/daily/ ' ' Примечание: «Центральный банк Российской Федерации установил курсы валют иностранной валюты по отношению к рублю, не принимая на себя никакой ответственности перед ' купить или продать иностранную валюту по курсу. ' ' Пример: ' Dim Rates как вариант ' Курсы = ExchangeRatesCbr() ' Ставки(9, 0) -> 2018-10-06 ' Дата публикации. ' Rates(9, 1) -> "DKK" ' Код валюты. ' Rates(9, 2) -> 10.2697 ' Обменный курс. ' Rates(9, 3) -> "Danish Krone" ' Название валюты на английском языке. ' ' 07.10.2018. Густав Брок, Cactus Data ApS, CPH. ' Публичная функция ExchangeRatesCbr( _ Необязательный ByVal LanguageCode как строка) _ Как вариант «Операционные константы. ' ' Конечные точки API. Const RuServiceUrl As String = "https://cbr.ru/currency_base/daily/" Const EnServiceUrl As String = "https://cbr.
ru/eng/currency_base/daily/" «Функциональные константы. ' 'Кодировка страницы. Набор символов Const As String = "UTF-8" 'Асинхронная настройка. Const Async As Variant = False ' Имя класса таблицы данных. Const DataClassName As String = "данные" ' Элементы поля html-таблицы. Константа CodeField как целое число = 1 Const NameField As Integer = 3 Const UnitField As Integer = 2 Const RateField As Integer = 4 ' Локатор/заголовок даты публикации: "DT":". Const DateHeader As String = """DT"":""" ' Длина отформатированной даты: 2000-01-01. Константа DateLength как целое число = 10 ' Час обновления (UTC). Const UpdateHour As Date = #13:00:00# ' Интервал обновления: 24 часа. Константа UpdatePause как целое число = 24 'Код английского языка. Const EnglishCode As String = "en" 'Код русского языка. Const RussianCode As String = "ru" #Если раннее связывание, то «Майкрософт XML, версия 6.
0. Dim XmlHttp как MSXML2.ServerXMLHTTP60 ' Библиотека объектов данных Microsoft ActiveX 6.1. Тусклый поток как ADODB.Stream ' Библиотека объектов Microsoft HTML. Тусклый документ как MSHTML.HTMLDocument Dim Scripts As MSHTML.IHTMLElementCollection Dim Script As MSHTML.HTMLHtmlElement Dim Tables As MSHTML.IHTMLElementCollection Dim Table As MSHTML.HTMLHtmlElement Dim Rows As MSHTML.IHTMLElementCollection Затемнить строку как MSHTML.HTMLHtmlElement Dim Fields As MSHTML.IHTMLElementCollection Установите XmlHttp = новый MSXML2.ServerXMLHTTP60 Установить поток = новый ADODB.Stream Установить документ = новый MSHTML.HTMLDocument #Еще Dim XmlHttp как объект Тусклый поток как объект Затемнить документ как объект Dim скрипты как объект Dim Script как объект Dim Tables как объект Dim Table As Object Затемнить строки как объект Затемнить строку как объект Затемнение полей как объекта Установите XmlHttp = CreateObject("MSXML2.
ServerXMLHTTP") Установить поток = CreateObject("ADODB.Stream") Установить Документ = СоздатьОбъект("htmlфайл") #Конец, если Статические ставки () как вариант Статический LastCall как дата Статический LastCode как строка Dim ServiceUrl как строка Dim RateCount как целое число Dim публикуется как строка Dim ValueDate как дата Dim ThisCall As Date Затемнить текст как строку Dim Index как целое число Тусклый блок как двойной Dim ScaledRate As Double Dim TrueRate как двойной Если StrComp(LanguageCode, RussianCode, vbTextCompare) = 0 Тогда LanguageCode = РусскийКод Сервисурл = РуСервисурл Еще LanguageCode = EnglishCode Сервисурл = ЭнСервисурл Конец, если Если LastCode = LanguageCode And DateDiff("h", LastCall, UtcNow) < UpdatePause Тогда ' Возврат кешированных ставок. Еще ' Получить обновленные ставки. ' Определить массив результатов по умолчанию.
' Redim для четырех измерений: дата, код, скорость, имя. ReDim ставки (0, 0 до 3) Оценки(0, RateDetail.Date) = NoValueDate Тарифы(0, RateDetail.Code) = NeutralCode Оценки(0, RateDetail.Rate) = NeutralRate Rates(0, RateDetail.Name) = NeutralName ' Получить данные. XmlHttp.Open "GET", ServiceUrl, асинхронный XmlHttp. Отправить Если XmlHttp.Status = HttpStatus.OK Тогда ' Получить и преобразовать страницу. ' Невозможно использовать набор символов по умолчанию. Видеть: https://stackoverflow.com/a/23812869/3527297 ' Записать необработанные байты в поток. Поток.Открыть Stream.Type = адтипебинари Stream.Write XmlHttp.responseBody ' Считать текстовые символы из потока, применяя набор символов. Поток.Позиция = 0 Поток.Тип = adTypeText Stream.Charset = Набор символов ' Скопируйте страницу в объект документа.
Document.body.innerHTML = Stream.ReadText ' Найдите в сценариях дату публикации. Установить сценарии = Document.getElementsByTagName ("сценарий") ДатаДаты = Дата Для каждого скрипта в скриптах Текст = Скрипт.innerHTML Если InStr(Text, "uniDbQuery_Data =") > 0 Тогда Опубликовано = Оставлено (Разделить (Текст, Заголовок даты) (1), Длина даты) Если Дата(Опубликовано), Тогда ValueDate = CDate(опубликовано) Конец, если Выход для Конец, если Следующий ' Выполните поиск в таблицах, чтобы найти таблицу данных. ' Не работает с поздним связыванием. ' Установить таблицы = Document.getElementsByClassName ("данные") Установить таблицы = Document.getElementsByTagName ("таблица") Для каждой таблицы в таблицах Если ИмяТабл.
класса = ИмяКлассаДанных Тогда Выход для Конец, если Следующий Если не таблица ничего, то «Стол найден. Установить строки = Table.getElementsByTagName ("tr") ' Уменьшите количество на единицу, чтобы пропустить строку заголовка. RateCount = Rows.Length - 1 ' Redim для четырех измерений: дата, код, скорость, имя. ReDim Rates (от 0 до RateCount - 1, от 0 до 3) ' Заполнить массив ставок. Для индекса = LBound (ставки, 1) в UBound (ставки, 1) ' Сместите индекс на единицу, чтобы пропустить строку заголовка. Установить строку = строки.Элемент (индекс + 1) ' Получить поля этой ставки. Установить поля = Row.getElementsByTagName ("td") ' Возвращенные скорости масштабируются, чтобы содержать только четыре десятичных знака.
' Вычислите истинную (немасштабированную) скорость. ScaledRate = Val(Replace(Fields.Item(RateField).innerText, ",", ".")) Unit = Val(Fields.Item(UnitField).innerText) TrueRate = ScaledRate / Unit Тарифы(индекс, RateDetail.Date) = ValueDate Тарифы(индекс, RateDetail.Code) = Fields.Item(CodeField).innerText Тарифы(Индекс, RateDetail.Rate) = TrueRate Тарифы(индекс, RateDetail.Name) = Fields.Item(NameField).innerHTML Следующий Конец, если ThisCall = ValueDate + UpdateHour ' Запишите запрошенный язык и время публикации полученных ставок. LastCode = LanguageCode Последний Звонок = Этот Звонок Конец, если Конец, если ExchangeRatesCbr = Курсы Конечная функция
Отсюда вы можете выбрать интересующую вас валюту или использовать вспомогательную функцию CurrencyConvertCbr
для прямого выбора валюты и коэффициента пересчета:
' Возвращает текущий коэффициент пересчета из рублей в другую валюту на основе официальные курсы валют, публикуемые ЦБ РФ.«Федерация. ' ' При необходимости коэффициент пересчета может быть рассчитан из любого другого опубликованы курсы валют. Обменные курсы из или в другие валюты, чем ' Рубли рассчитываются из руб. треугольным расчетом. ' ' Если передан неверный или неопубликованный код валюты, коэффициент пересчета ' возвращается ноль. ' ' Примеры, типичные: ' CurrencyConvertCbr("DKK") -> 0,0973738278625471 ' CurrencyConvertCbr("DKK", "EUR") -> 7.46477501777072 ' CurrencyConvertCbr("AUD") -> 0.021253081696846 ' CurrencyConvertCbr("AUD", "DKK") -> 0.2182627731021 ' CurrencyConvertCbr("DKK", "AUD") -> 4.58163334858857 ' CurrencyConvertCbr("EUR", "DKK") -> 0.133962510272498 ' CurrencyConvertCbr("", "DKK") -> 10.2697 ' CurrencyConvertCbr("EUR") -> 0.013044442415309 ' Примеры, нейтральный код. ' CurrencyConvertCbr("AUD", "XXX") -> 1 ' CurrencyConvertCbr("XXX", "AUD") -> 1 ' ВалютаКонвертЦбр("ХХХ") -> 1 ' Примеры, неверный код. ' CurrencyConvertCbr("XYZ") -> 0 ' CurrencyConvertCbr("DKK", "XYZ") -> 0 ' ' 07.10.
2018. Густав Брок, Cactus Data ApS, CPH. ' Открытая функция CurrencyConvertCbr( _ ByVal IsoTo As String, _ Необязательный ByVal IsoFrom As String = RubelCode) _ Как двойной Dim Rates () как вариант Dim RateTo As Double Dim Rate From As Double Dim Factor как двойной Dim Index как целое число Если ИзоОт = "" Тогда ИзоОт = Рублевый Код Конец, если Если ИзоТо = "" Тогда IsoTo = Рублевый Код Конец, если Если IsoTo = NeutralCode или IsoFrom = NeutralCode, тогда Фактор = нейтральная ставка ИначеЕсли ИзоТо = ИзоОт Тогда Фактор = нейтральная ставка Еще Курсы () = Курсы ОбменаCbr Если IsoTo = Код Рубеля Тогда RateTo = нейтральная ставка Еще Для индекса = LBound (ставки) в UBound (ставки) Если Тарифы(Индекс, RateDetail.Code) = IsoTo Тогда RateTo = Rates(Index, RateDetail.Rate) Выход для Конец, если Следующий Конец, если Если RateTo > NoRate, то Если IsoFrom = Рублевый Код Тогда СтавкаОт = Нейтральнаяставка Еще Для индекса = LBound (ставки) в UBound (ставки) Если Тарифы(Индекс, RateDetail.
Code) = IsoFrom Тогда RateFrom = Rates(Index, RateDetail.Rate) Выход для Конец, если Следующий Конец, если Коэффициент = Ставка от / Ставка до Конец, если Конец, если CurrencyConvertCbr = Фактор Конечная функция
Чтобы получить курсы на историческую дату, примените последний параметр, например, для 2020-11-02, как показано здесь:
https://cbr.ru/eng/currency_base/daily/?UniDbQuery.Posted= True&UniDbQuery.To=02%2F11%2F2020
Моя функция этого не сделает, но вам должно быть легко настроить.
Полный исходный код на GitHub: VBA.CurrencyExchange
Раскрытие информации: Связанная страница содержит обширный код, написанный только мной.
Диаграмма: Кому принадлежат резервы Центрального банка России?
Описание
На этой диаграмме показаны крупнейшие держатели валютных и золотых резервов российского центрального банка по географическому распределению.
Отчет
Скачать диаграмму
URL-адрес, который будет использоваться в качестве справочной ссылки:
https://www.statista.com/chart/26940/russian-central-bank-foreign-currency-and-gold-reserves-by-holder/
HTML-код для встраивания диаграммы
Вы найдете больше инфографики на Statista
Инфографический информационный бюллетень
Statista предлагает ежедневную инфографику по актуальным темам, охватывающую: Экономика и финансы , Политика и общество , Технологии и СМИ , Здоровье и окружающая среда , Потребительские товары , Спорт и многие другие.
Связанная инфографика
Часто задаваемые вопросы
Statista «График дня», доступный
по лицензии Creative Commons CC BY-ND 3.0, можно использовать
и отображается бесплатно всеми коммерческими и
некоммерческие сайты. Однако использование разрешено только с
правильная атрибуция Statista. При публикации одного из этих рисунков
включите обратную ссылку на соответствующий URL-адрес инфографики.Больше информации
Statista «График дня» в настоящее время фокусируется
по двум секторам: «Медиа и технологии», обновленный
ежедневно и с последней статистикой из СМИ,
Интернет, телекоммуникации и бытовая электроника
отрасли промышленности; и «Экономика и общество», которые
текущие данные из Соединенных Штатов и вокруг
мира по экономическим и политическим вопросам, а также
спорт и развлечения.