Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Еще…Меньше
С помощью типа данных Валюты можно легко получить и сравнить обменные курсы по всему миру. В этой статье вы узнаете, как вводить пары валют, преобразовывать их в тип данных и извлекать дополнительные сведения для надежных данных.
Примечание: Валютные пары доступны только для Microsoft 365 (клиенты с несколькими клиентами по всему миру).
Использование типа данных «Валюты» для расчета обменных курсов
-
Введите валютную пару в ячейку, используя такой формат: Из валюты / В валюту с кодами валют ISO.
Например, введите «ДОЛЛАР/ЕВРО», чтобы получить курс обмена от одного доллара США к евро.
-
Выберем ячейки и выберите Вставить >таблицу. Создание таблицы не обязательно, но значительно упростит вставку данных из типа данных.
-
Выбрав ячейки, перейдите на вкладку Данные и выберите тип данных Валюты.
Если Excel обнаружит совпадение между валютной парой и поставщиком данных, текст преобразуется в тип данных, а в ячейке значок Валюты.
Примечание: Если в ячейке вместо значка Валюты, Excel затруднение при совпадении текста с данными. Исправь все ошибки и нажмите ввод, чтобы повторить попытку. Можно также выбрать значок, чтобы открыть селектор данных, в котором можно найти валютную пару или указать нужные данные.
-
Чтобы извлечь дополнительные сведения из типа данных Валюты, выберите одну или несколько преобразованных ячеек и нажмите кнопку Вставить данные отобразить или нажать клавиши CTRL/CMD+SHIFT+F5.
-
Вы увидите список всех доступных полей. Выберите поля, чтобы добавить новый столбец данных.
Например, «Цена» представляет обменный курс для валютной пары, а время последней сделки — время, в течение которого курс был цитироваться.
-
После того как у вас есть все необходимые данные о валюте, их можно использовать в формулахи вычислениях. Чтобы убедиться, что данные обновлены, перейдите в> Обновить все, чтобы получить обновленную кавычка.
Внимание: Сведения о валюте предоставляются «как есть» и могут быть задержаны. Поэтому эти данные не следует использовать в целях торговли или советов. Дополнительные сведения см. всведениях об источниках данных.
См. также
Типы данных «Акции» и «География»
Написание формул, ссылаясь на типы данных
Функция ПОЛЕVALUE
#FIELD! ошибка
Нужна дополнительная помощь?
Я уже неоднократно разбирал способы импорта данных в Excel из интернета с последующим автоматическим обновлением. В частности:
- В старых версиях Excel 2007-2013 это можно было сделать с помощью прямого веб-запроса.
- Начиная с 2010 года это можно очень удобно делать с помощью надстройки Power Query.
К этим способам в последних версиях Microsoft Excel теперь можно добавить ещё один — импорт данных из интернета в формате XML с помощью встроенных функций.
XML (eXtensible Markup Language = Расширяемый Язык Разметки) – это универсальный язык, созданный для описания любых данных. По сути, он представляет собой обычный текст, но с добавленными в него специальными тегами для разметки структуры данных. Многие сайты совершенно бесплатно предоставляют всем желающим потоки своих данных в XML-формате для загрузки. На сайте Центрального Банка России (www.cbr.ru), в частности, с помощью подобной технологии отдаются данные по курсам различных валют. С сайта Московской Биржи (www.moex.com) таким же образом можно загрузить котировки акций, облигаций и множество другой полезной информации.
Начиная с версии 2013 в Excel появились две функции для прямой загрузки XML-данных из интернета в ячейки листа: ВЕБСЛУЖБА (WEBSERVICE) и ФИЛЬТР.XML (FILTERXML). Работают они в паре — сначала функция ВЕБСЛУЖБА выполняет запрос к нужному сайту и возвращает его ответ в формате XML, а затем с помощью функции ФИЛЬТР.XML мы «разбираем» этот ответ на составляющие, извлекая из него нужные нам данные.
Давайте рассмотрим работу этих функций на классическом примере – импорте курса любой нужной нам валюты на заданный интервал дат с сайта Центробанка России. В качестве заготовки будем использовать вот такую конструкцию:
Здесь:
- В жёлтых ячейках находятся даты начала и окончания интересующего нас периода.
- В синей сделан выпадающий список валют при помощи команды Данные — Проверка — Список (Data — Validation — List).
- В зеленых ячейках мы будем использовать наши функции, чтобы создать строку запроса и получить ответ сервера.
- Таблица справа — справочник по кодам валют (потребуется нам чуть позже).
Поехали!
Шаг 1. Формируем строку запроса
Чтобы получить от сайта требуемую информацию, его нужно правильно спросить. Заходим на www.cbr.ru и в подвале главной страницы открываем ссылку Технические ресурсы - Получение данных, используя XML (http://cbr.ru/development/SXML/). Проматываем чуть ниже и во втором примере (Example 2) будет то, что нам нужно — получение курсов валюты на заданный интервал дат:
Как видно из примера, строка запроса должна содержать даты начала (date_req1) и окончания (date_req2) интересующего нас периода и код валюты (VAL_NM_RQ), курс которой мы хотим получить. Коды основных валют вы можете найти в таблице ниже:
Валюта |
Код |
Валюта |
Код |
|
Австралийский доллар | R01010 |
Литовский лит |
R01435 |
|
Австрийский шиллинг |
R01015 |
Литовский талон |
R01435 |
|
Азербайджанский манат |
R01020 |
Молдавский лей |
R01500 |
|
Фунт стерлингов |
R01035 |
Немецкая марка |
R01510 |
|
Ангольская новая кванза |
R01040 |
Нидерландский гульден |
R01523 |
|
Армянский драм |
R01060 |
Норвежская крона |
R01535 |
|
Белорусский рубль |
R01090 |
Польский злотый |
R01565 |
|
Бельгийский франк |
R01095 |
Португальский эскудо |
R01570 |
|
Болгарский лев |
R01100 |
Румынский лей |
R01585 |
|
Бразильский реал |
R01115 |
Сингапурский доллар |
R01625 |
|
Венгерский форинт |
R01135 |
Суринамский доллар |
R01665 |
|
Гонконгский доллар |
R01200 |
Таджикский сомони |
R01670 |
|
Греческая драхма |
R01205 |
Таджикский рубл |
R01670 |
|
Датская крона |
R01215 |
Турецкая лира |
R01700 |
|
Доллар США |
R01235 |
Туркменский манат |
R01710 |
|
Евро |
R01239 |
Новый туркменский манат |
R01710 |
|
Индийская рупия |
R01270 |
Узбекский сум |
R01717 |
|
Ирландский фунт |
R01305 |
Украинская гривна |
R01720 |
|
Исландская крона |
R01310 |
Украинский карбованец |
R01720 |
|
Испанская песета |
R01315 |
Финляндская марка |
R01740 |
|
Итальянская лира |
R01325 |
Французский франк |
R01750 |
|
Казахстанский тенге |
R01335 |
Чешская крона |
R01760 |
|
Канадский доллар |
R01350 |
Шведская крона |
R01770 |
|
Киргизский сом |
R01370 |
Швейцарский франк |
R01775 |
|
Китайский юань |
R01375 |
Эстонская крона |
R01795 |
|
Кувейтский динар |
R01390 |
Югославский новый динар |
R01804 |
|
Латвийский лат |
R01405 |
Южноафриканский рэнд |
R01810 |
|
Ливанский фунт |
R01420 |
Вон Республики Корея |
R01815 |
|
Японская иена |
R01820 |
Полный справочник по кодам валют есть там же, на сайте ЦБ – см. http://cbr.ru/scripts/XML_val.asp?d=0
Теперь сформируем строку запроса в ячейке на листе с помощью:
- оператора склейки текста (&), чтобы собрать воедино;
- функции ВПР (VLOOKUP), чтобы найти код нужной нам валюты в справочнике;
- функции ТЕКСТ (TEXT), преобразующей дату по заданному шаблону день-месяц-год через косую черту.
="http://cbr.ru/scripts/XML_dynamic.asp?date_req1="&ТЕКСТ(B2;"ДД/ММ/ГГГГ")& "&date_req2="&ТЕКСТ(B3;"ДД/ММ/ГГГГ")&"&VAL_NM_RQ="&ВПР(B4;M:N;2;0)
Шаг 2. Выполняем запрос
Теперь используем функцию ВЕБСЛУЖБА (WEBSERVICE) с созданной строкой запроса в качестве единственного аргумента. Ответом будет длинная строка XML-кода (лучше включить перенос по словам и увеличить размер ячейки, если хочется увидеть её целиком):
Шаг 3. Разбираем ответ
Чтобы легче было разобраться в структуре данных ответа, лучше воспользоваться одним из онлайн-парсеров XML (например, http://xpather.com/ или https://jsonformatter.org/xml-parser), которые умеют наглядно форматировать XML-код, добавляя к нему отступы и подсвечивая цветом синтаксис. Тогда всё станет существенно понятнее:
Теперь хорошо видно, что значения курса обрамлены у нас тегами <Value>…</Value>, а даты являются атрибутами Date в тегах <Record>.
Чтобы их извлечь курс, выделим на листе столбец из десяти (или более — если делать с запасом) пустых ячеек (т.к. был задан 10-дневный интервал дат) и введём в строку формул функцию ФИЛЬТР.XML (FILTERXML):
Здесь первый аргумент – это ссылка на ячейку с ответом сервера (B8), а второй – строка запроса на XPath – специальном языке, с помощью которого можно обращаться к нужным фрагментам XML-кода и извлекать их. Подробнее о языке XPath можно почитать, например, тут.
Важно после ввода формулы нажать не Enter, а сочетание клавиш Ctrl+Shift+Enter, т.е. ввести её как формулу массива (фигурные скобки вокруг будут добавлены автоматически). Если же у вас последняя версия Office 365 с поддержкой в Excel динамических массивов, то хватит и простого Enter, да и выделять заранее пустые ячейки не требуется — функция сама займет столько ячеек, сколько ей нужно.
Для извлечения дат поступим аналогично – выделим несколько пустых ячеек в соседнем столбце и используем ту же функцию, но с другим запросом XPath, чтобы получить все значения атрибутов Date из тегов Record:
=ФИЛЬТР.XML(B8;»//Record/@Date»)
Теперь в будущем при изменении дат в исходных ячейках В2 и В3 или выборе другой валюты в выпадающем списке ячейки B3, наш запрос будет автоматически обновляться, обращаясь к серверу ЦБ за новыми данными. Чтобы форсировать обновление вручную, можно дополнительно использовать сочетание клавиш Ctrl+Alt+F9.
Ссылки по теме
- Импорт курса биткойна в Excel через Power Query
- Импорт курса валют из интернета в старых версиях Excel
Официальные курсы валют используются в расчете таможенных платежей, налоговом, бухгалтерском учете при работе с иностранными организациями и компаниями. Рассмотрим калькулятор, который позволяет рассчитать курс валют онлайн в Excel. Данный калькулятор будет полезен инвесторам, финансовым аналитикам, бухгалтерам для получения информации о значениях курса валют с международных финансовых рынков (forex).
Курс валют онлайн: калькулятор
Для получения значения курса по основным валютным парам на международном финансовом рынке, вы можете воспользоваться созданной программой Excel (с макросом) для импорта текущих данных с сервиса Yahoo finance. Следует заметить, что данные курса валют отечественной валюты устанавливается ЦБ РФ и может отличаться от данных Yahoo.
Курс валют можно рассчитать по всем основным валютам и валютным парам:
- USD (Доллар),
- EUR (Евро),
- GBP (Фунт),
- JPY (Йена),
- CHF (Швейцарский франк),
- CAD (Канадский доллар),
- RUB (Рубль),
- AUD (Австралийский доллар),
- NZD (Новозеландский доллар).
Для этого можно в выпадающем списке составить необходимую валютную пару и получить соответствующий курс в режиме реального времени.
Так как данная валютная пара торгуется на международном финансовом рынке, то она имеет следующие выходные параметры: цена закрытия, цена открытия, цена покупки и цена продажи. Как правило, чаще всего используется цена закрытия.
Скачать калькулятор курса валют онлайн в Excel
КУРС
EXCEL ACADEMY
Научитесь использовать все прикладные инструменты из функционала MS Excel.
По сети уже лет 300 гуляет инструкция, рассказывающая о том, как забрать курс валют с сайта Центробанка. Инструкция, в принципе, рабочая, но за 300 лет сайт ЦБ прилично изменился, да и технология web-разработки шагнули далеко вперёд, поэтому не всегда можно получить желаемые таблички с определённых ресурсов.
Но курсы доллара и евро по-прежнему легко добываются. Давайте начнём именно с них.
Если у вас Microsoft Office 2019 Professtional Plus или Microsoft Office 2013, скачайте Power Query в качестве надстройки с официального сайта.
Тогда вы получите вкладку Power Query на ленте.
В более новых версиях переходим на вкладку «Данные», выбираем «Получить данные», затем «Из других источников» и кликаем «Из интернета». Альтернативный вариант – сразу щёлкнуть по соответствующей иконке рядом с командой «Получить данные».
Вводим адрес сайта Центробанка: https://cbr.ru
В открывшемся окошке можно менять вид просмотрщика.
Представление таблицы – это сортировка одних лишь таблиц (что, по идее, нам и нужно).
Веб-представление подойдёт в тех случаях, когда вам нужно полазать по сайту и проверить, что там Power Query вообще обнаружил. Предупреждаем, что веб-представление – это не браузер, сёрфить тут не разрешают, лишь визуально представлять себе результаты импорта. Даже кукисы принять не сможете…
Мы же выбираем Table 0, которая на просмотрщике отображается как нужная табличка с курсами валют, и нажимаем «Преобразовать данные».
Миссия выполнена! Конечно, мы можем перейти на вкладку «Главная» и нажать «Закрыть и загрузить в», указав вариант «Таблица», но лучше всего учесть вероятность будущих вычислений.
Если вы захотите применить к этой табличке банальное вычитание или сложение, то разживётесь ошибкой «ЗНАЧ». Она вылезает тогда, когда имеются неточности с форматами. Поэтому давайте сразу в запросе зададим нужный формат ячеек, а именно – валюту.
Кликаем по иконке ABC в заголовке столбца и выбираем тип «Валюта». Повторяем операцию в соседнем столбце.
Таким образом, мы будем автоматически получать заранее отформатированные ячейки.
А вот теперь с чистой совестью переходим на главную вкладку, «Закрыть и загрузить в», после чего указываем таблицу.
Можем проверить себя и произвести какие-нибудь вычисления, к примеру, вычитание, чтобы узнать разницу курсов за пару дней.
Во-первых, нам достаётся корректный результат и, во-вторых, благодаря преимуществам умных таблиц, этот самый результат протягивается вниз.
Наконец, если в ваших расчётах постоянно участвует курс доллара или евро, и вам требуется обновлять его, ссылаясь на импортированные ячейки, то повторять все эти шаги больше не нужно – достаточно кликнуть правой кнопкой мыши на таблицу в Excel и выбрать «Обновить». Либо вы можете нажать на значок в панели подключений, ну или на вкладке «Данные».
Вот так мы обзаводимся динамическим курсом валют, обновляем его в один клик и адаптируем свои расчёты с Power Query. Узнать о других приемах, которые облегчат вашу работу с Excel, можно на нашем открытом онлайн-курсе «Аналитика в Excel».
КУРС
EXCEL ACADEMY
Научитесь использовать все прикладные инструменты из функционала MS Excel.
Блог SF Education
Uncategorized
О курсе “Power BI и Power Query: аналитика и визуализация данных”
Power BI и Power Query – обучающий курс по работе с Power BI и Power Query. На курсе студенты обучаются формировать, обрабатывать и визуализировать бизнес-данные,…
Tableau vs Power BI
Статья доступна в аудиоверсии Как же приятно осознавать, что мы не только обучаем Вас, дорогие студенты, но и развиваемся сами! Мы запустили новый курс…
Большинство работников финансовой сферы воспринимают Excel как красивый калькулятор. Мы решили помочь вам развить навыки использования этого важного инструмента, сделать из него настоящего помощника, а не просто хранителя данных. Предлагаем вам посмотреть, как можно подгрузить данные из сети Интернет непосредственно в таблицу Excel и создать функцию выбора курса валют на необходимую дату.
Немного больше 60 лет прошло с момента изобретения первого компьютера и около 50 лет с первых шагов по созданию интернета. Сейчас практически у каждого в кармане лежит мини-компьютер (смартфон) с доступом в сеть, уже начали появляться машины без водителя, некоторые и вовсе собираются колонизировать Марс. При этом большинство наших слушателей (работников финансовой сферы) до сих пор воспринимают Excel как красивый калькулятор. Мы решили помочь вам развить навыки использования этого важного инструмента, сделать из него настоящего помощника, а не просто хранителя данных.
Сегодня предлагаем вам посмотреть, как можно подгрузить данные из сети Интернет непосредственно в таблицу Excel и обработать их (создать функцию выбора курса валют на необходимую дату).
Для чего может понадобиться эта возможность?
Если вам регулярно необходим курс Центрального Банка РФ, то функция «Загрузка курса с сайта ЦБ» позволит сэкономить много времени.
Разбиваем задачу на две части:
(1) Автоматизируем загрузку курсов валют за необходимый период с сайта Центрального Банка России
(2) Пишем небольшой скрипт, который создаст «Пользовательскую функцию» для выбора курса на дату и предоставит его вставку в ячейку
Хотите уметь делать так сами? Это не сложно…
Ознакомьтесь со следующими курсами по Excel от HOCK Training:
(1) Загрузка курсов
Для решения данной задачи воспользуемся стандартным малоизвестным функционалом Excel.
* оговорка о совместимости версий
⚠ Данный функционал приводится для версий MS Office до 2020 года выпуска. Отличие новых версий офиса состоит в том, что путь к странице с данными указывается строкой (копи-пастом из браузера), а не через встроенный браузер MS Excel. Остальные действия по разработке функции аналогичны приведённым в данной статье.
Подробный разбор алгоритма действий в более новых версиях офиса приведен в дистанционном курсе «Программирование в Excel».
(1.1) Линейка «Данные» —> «Получение внешних данных» —> «Из Интернета»:
(1.2) В открывшемся внутреннем браузере Excel переходим на сайт ЦБ РФ и переходим на страницу с курсами:
(1.3) Далее необходимо указать период для загрузки:
(1.4) После получения данных нажмите кнопку «Импорт» и данные загрузятся в лист Excel
ВАЖНО!
Не забудьте перед этим поставить галочку в небольшом квадратике вверху страницы. На рисунке выше он зеленого цвета.
При этом в Excel будут загружены данные:
(1.5) Если все данные действия записать в виде макроса, то получим следующий скрипт в Visual Basic:
Обратите внимание на выделенные элементы кода. Если вносить в них изменения и запускать код на выполнение — будем получать курсы за нужный период. И не придется каждый раз повторять операции описанные выше в пунктах (1.1-1.4).
Следующий шаг — написание скрипта, который будет выбирать из подгруженных данных курс на требуемую дату и будет возвращать его при помощи функции в ячейку.
(2) Создание функции «Выбор курса на дату».
Используем возможности создания «Пользовательских функций» в редакторе Visual Basic:
(2.1) Создаем процедуру для обработки данных. Проверяем корректность работы программы на процедуре. Найденное значение курса записывается в переменную kurs (см листинг ниже).
(2.2) Меняем процедуру на функцию:
Скачать программу
(2.3) Вставляем в ячейку на листе с данными нашу функцию (ищите её в категории «Определенные пользователем»):
(2.4) «Растягиваем» ячейку с формулой на необходимый нам диапазон стандартным образом:
Работает 😉
Только для дочитавших до конца статьи — наш подарок:
Бесплатный воркшоп «Как начать программировать в Excel, совершенно не зная языка Visual Basic»
95% слушателей отметили вебинар как «очень полезный»
Вам понадобится компьютер с Windows и MS Office
Если вы хотите разобраться в автоматизации MS Excel более подробно, обратите внимание на следующие полезные ресурсы:
Справочник по VBA для Excel
https://docs.microsoft.com/ru-ru/office/vba/api/overview/excel
Справочная система «Объектная модель (Excel)»
https://docs.microsoft.com/ru-ru/office/vba/api/overview/excel/object-model
Дистанционный курс HOCK Training «Программирование в Excel»
https://www.hocktraining.com/distancionny-excel-dlya-finansistov
Практический тренинг «Обработка и анализ данных в Excel»
https://www.hocktraining.com/open/obrabotka-i-analiz-dannikh-v-excel
Все блоги
Необходимо указать формулу для расчёта курса доллара в диапазоне E2:E4 для заданных дат из диапазона D2:D4, используя данные таблицы A1:B17. Предположим формула бесконечная.
А у меня другая (18 января )
=ВПР(D2;A:B;2)
=ПРОСМОТР(D2;A:A;B:B)
=ИНДЕКС(B:B;ПОИСКПОЗ(D2;A:A))
Скажи мне, кудесник, любимец ба’гов…
Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995
Недавно для своих нужд написал функцию. Можно прямо в ячейке получать курс НБУ на указанную дату.
Может будет кому-то полезна.
Если дату явно не указывать, то будет выведен курс для текущей даты
Function Get_NBU_Rates(sCurr As String, Optional dDate As Date) As Double
' Author: boa
' Description: Возвращает курс НБУ для указанной валюты на заданную дату
' sCurr - буквенный код валюты. Например: "EUR", "USD", "RUB" и т.п.
On Error Resume Next
Dim oHttp As Object
Dim sURI$, htmlcode$
Set oHttp = CreateObject("MSXML2.XMLHTTP")
If Err.Number <> 0 Then Err.Clear: Set oHttp = CreateObject("MSXML2.XMLHTTPRequest"):
If oHttp Is Nothing Then Exit Function
On Error GoTo 0
If dDate = 0 Then dDate = Date
sURI = "https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?valcode=" & sCurr & "&date=" & Format(dDate, "YYYYMMDD")
oHttp.Open "GET", sURI, False
oHttp.send: DoEvents
htmlcode = oHttp.responseText
Get_NBU_Rates = CDbl(Val(GetTagsNBU(htmlcode, "rate")))
End Function
Private Function GetTagsNBU(ByVal htmlcode$, ByVal TagName$) As String
' Debug.Print htmlcode
If InStr(1, htmlcode, TagName) Then
Dim str$: str = Split(htmlcode, TagName)(1)
GetTagsNBU = Replace(Replace(str, ">", ""), "</", "")
End If
End Function
Я давно использую похожую функцию:
Function КурсЦБР(Optional Код_Валюты = "USD", Optional ByVal Дата) As Currency ' запрос курса любой валюты с сайта ЦБ РФ
'---------------------------------------------------------------------------------------
' Procedure : КурсЦБР
' Author : Основа - ZVI:2008-10-31, коррекция - Alex_ST: 2010-01-28
' URL : http://www.planetaexcel.ru/forum.php?thread_id=3816
' Date : 28.01.2010
' Purpose : Определение курса валют, установленного ЦБР на заданную дату [по умолчанию - текущая дата]
' Notes : Валюта - любая [по умолчанию - доллар США] из публикуемых на сайте ЦБРФ
' http://cbr.ru/currency_base/daily.aspx
' Вместо кода валюты можно вводить уникальную часть её названия:
' (вместо "BUR" можно ввести "Белорусских рублей" или "белорус")
' Примеры вызова в формуле ячейки:
' =КурсЦБР()или =КурсЦБР("USD") или =КурсЦБР("сШа") - курс USD для текущей даты
' =КурсЦБР(;"2008-10-30")или =КурсЦБР(;"2008.10.30") или =КурсЦБР("сШа") - курс USD для даты 2008.10.30
' Аналогично:
' =КурсЦБР("EUR") или =КурсЦБР("еВрО") - курс EUR для текущей даты
' =КурсЦБР("EUR";"2008/10/30") или =КурсЦБР("EUR";ДАТА(2008;10;30))
'---------------------------------------------------------------------------------------
Dim Запрос$, Ответ$, Курс$
Dim oHttp As Object
Dim ДЕНЬ$, Месяц$, ГОД$
Application.Volatile
If IsMissing(Дата) Then Дата = Date
If Not IsDate(Дата) Then Дата = CDate(Дата)
ДЕНЬ = Format(Дата, "dd"): Месяц = Format(Дата, "mm"): ГОД = Format(Дата, "yyyy")
Запрос = "http://cbr.ru/currency_base/daily.aspx?C_month= " & Месяц & "&C_year=" _
& ГОД & "&date_req=" & ДЕНЬ & "%2F" & Месяц & "%2F" & ГОД
On Error Resume Next
Set oHttp = CreateObject("MSXML2.XMLHTTP")
If Err <> 0 Then Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
If oHttp Is Nothing Then Exit Function
oHttp.Open "GET", Запрос, False
oHttp.Send
Ответ = UCase(oHttp.responseText)
'В HTML-коде, получаемом по запросу от сервера ЦБРФ, строка таблицы для, например, Евро выглядит как:
'(с соблюдением переноса строк)
'<tr><td align=""right"">978</td> -- начало новой строки <tr>; начало первой ячейки с выравниванием "направо" <td align=""right"">; цифровой код валюты 978 ; конец первой ячейки </td>
'<td align=""left""> EUR</td> -- начало второй ячейки с выравниванием "налево" <td align=""left"">; два неразрывных пробела (отступ текста от левого края второй ячейки) буквенный код валюты EUR ; конец второй ячейки </td>
'<td align=""right"">1</td> -- начало третьей ячейки с выравниванием "направо" <td align=""right"">; кол-во единиц 1 ; конец третьей ячейки </td>
'<td> Евро</td> -- начало четвертой ячейки <td> ; два неразрывных пробела (отступ текста от левого края ячейки) название валюты Евро ; конец четвертой ячейки </td>
'<td align=""right"">42,5905</td></tr> -- начало пятой ячейки с выравниванием "направо" <td align=""right"">; курс 42,5905 ;конец ячейки </td> и строки </tr>
Курс = CCur(Mid(Ответ, InStr(InStr(1, Ответ, UCase(Код_Валюты)), Ответ, "</TD></TR>") - 7, 7))
' найти в стринге-ответе (HTML-коде) позицию слова UCase(Код_Валюты), например, "USD"
' начиная с этой позиции найти позицию конца строки - HTML-тэги "</td></tr>"
' отступить от найденной позиции на -7 символов и взять от этой позиции 7 символов - это и есть курс
Set oHttp = Nothing
КурсЦБР = Курс
End Function
Доброго дня, всем!
Цитата: Serge 007 от 30.11.2017, 17:26
Я давно использую похожую функцию: …
Не получилось: — в модуль книги скопировал Вашу функцию, на листе, в ячейку ввожу функцию — возвращает 0.
Шо то делаю не то, а вот шо?
Путей к вершине — множество. Этот один из многих!
Замените в коде строки
Запрос = "http://cbr.ru/currency_base/daily/?date_req=" & Format(Дата, "dd.mm.yyyy")
и
Курс = CCur(Mid(Ответ, InStr(InStr(1, Ответ, UCase(Код_Валюты)), Ответ, ",") - 2, 7))
УРА! vikttur и boa!! — Дай бог здоровья этим людям!
Путей к вершине — множество. Этот один из многих!
Функция РУБЛЬ выполняет округление числового значения до указанного количества знаков после запятой, преобразует данные в текстовый формат и возвращает полученную текстовую строку с обозначением соответствующей денежной единицы.
Функция РУБЛЬ.ДЕС выполняет преобразование стоимости в рублях, выраженной в виде целой и дробной части числа, и возвращает стоимость в рублях в виде десятичного числа. Данная функция в качестве дробной части возвращает частное от деления дробной части исходного значения на указанное число.
Функция РУБЛЬ.ДРОБЬ выполняет преобразование из десятичной в дробную форму записи показатель стоимости в рублях и возвращает полученное значение.
Расчет доходности инвестиций в Excel
Пример 1. Рассчитать доходность векселей, стоимость которых указана в целой и дробной части. Представить полученный результат с точностью до 1/16 рубля.
Исходная таблица:
Формула для расчета:
Для преобразования стоимости ценных бумаг используется функция РУБЛЬ.ДЕС(B4;16), которая принимает следующие аргументы:
- B4 – стоимость, выраженная в дробном представлении;
- 16 – число, на которое необходимо разделить дробную часть для десятичного представления.
Полученный результат:
Как преобразовать десятичные дроби цены в смешанные дроби
Пример 2. Преобразовать значения стоимости ценных бумаг в смешанные дробные значения (1/32 часть рубля).
Исходные данные:
Используем следующую формулу:
Описание аргументов:
- A2 – стоимость в рублях в десятичном представлении;
- 32 – число, на которое будет разделена десятичная дробная часть.
Выполним расчет стоимости второй акции, а затем с помощью автозаполнения определим остальные значения. Результаты вычислений:
Полученное значение на примере стоимости первой ценной бумаги следует читать как 1 целая и 4/32 рубля.
Пересчет цен по актуальному курсу доллара в Excel online
Пример 3. В каталоге продукции, хранимом в таблице Excel, содержатся наименования и цены товаров в долларах США. Произвести пересчет цен в рублях по актуальному курсу и отформатировать полученные значения с помощью функции РУБЛЬ, округлив цены до первого знака перед запятой.
Для использования актуальных данных по курсу валют подтянем данные из интернета:
- Создадим отдельный лист для таблицы с курсами, откроем вкладку «Данные» в программе Excel.
- Выберем пункт «Получение внешних данных» и подпункт «Из интернета»:
- В открывшемся окне введем адрес сайта с курсами валют и нажмем кнопку «Пуск» для перехода:
- Выберем таблицу, обозначенную желтой стрелкой, нажмем на нее, а затем нажмем на кнопку «Импорт»:
Результат импорта данных:
Для пересчета стоимости в рублях используем следующую функцию как формулу массива:
Описание аргументов:
- B2*Курсы_валют!$D$13 диапазона значений цен в долларах на текущий курс, значение которого хранится в ячейке D13 на листе Курсы_валют;
- -1 – значение, характеризующее количество знаков перед запятой для операции округления.
Полученный результат:
Особенности использования функций для работы с рублями в Excel
Функция РУБЛЬ имеет следующий синтаксис:
=РУБЛЬ(число;[число_знаков])
Аргументы функции:
- число – обязательный для заполнения аргумент, характеризующий числовое значение, которое требуется преобразовать в запись с отображением знака денежной единицы.
- [число_знаков] – необязательный аргумент, характеризующий количество знаков после запятой после операции округления. Если явно не указан, по умолчанию используется значение 2. Если представлен числом из диапазона отрицательных значений, его модуль характеризует количество знаков перед запятой.
Синтаксическая запись функции РУБЛЬ.ДЕС:
=РУБЛЬ.ДЕС(дроб_руб;дробь)
Описание аргументов:
- дроб_руб – обязательный аргумент, характеризующий целую и дробную часть цены в рублях.
- дробь – характеризует числовое значение, используемое в качестве знаменателя для десятичного представления дробной части. Аргумент обязателен для заполнения.
Синтаксис функции РУБЛЬ.ДРОБЬ:
=РУБЛЬ.ДРОБЬ(дес_руб;дробь)
Аргументы функции:
- дес_руб – обязательный аргумент, характеризующий десятичное представление цены в рублях.
- дробь – обязательный аргумент, характеризующий целое число, являющееся знаменателем для дробного представления.
Примечания:
- Нецелые числа, переданные в качестве аргумента дробь, будут усечены.
- Результатом выполнения функций РУБЛЬ.ДЕС и РУБЛЬ.ДРОБЬ будет ошибка #ДЕЛ/0!, если значение аргумента дробь взято из диапазона чисел от 0 (включительно) до 1 (не включая 1).
- Функции РУБЛЬ.ДЕС и РУБЛЬ.ДРОБЬ вернут код ошибки #ЧИСЛО!, если значение аргумента дробь взято из диапазона отрицательных чисел.
- Функция РУБЛЬ использует следующие форматы записи: «# ##0,00 р.» и «- # ##0,00 р.». Использование функции от простого форматирования ячеек заключается в том, что результатом выполнения этой функции является текстовая строка.