Страницы: 1
RSS
функция CBR дает неверный курс
 
Доброго дня. CBR дает курс турецкой лиры TRY на 24.08.2022 - 33.06, хотя он 3.31!
=CBR("24.08.2022";"TRY")
 
Добрый день, Татьяна.
Функция CBR, наверное, выдает значение курса без учета номинала (количества валюты, для которого указан курс).
В данном случае номинал равен 10.
Но номинал, в зависимости от валюты, может быть: 1, 10, 100, 1000 …

Вот функция, которая учитывает номинал и не зависит от изменения порядка параметров и смещений структуры, скачиваемой с ЦБ:
Код
Function CbrNew(Optional ByVal OnDate, Optional Cur As String = "USD") As Double
  Static oDoc As Object
  If oDoc Is Nothing Then
    Set oDoc = CreateObject("msxml2.DOMDocument")
    oDoc.async = False
  End If
  If IsMissing(OnDate) Then OnDate = Date
  oDoc.Load "http://www.cbr.ru/scripts/XML_daily.asp?date_req=" & Format(OnDate, "DD\/MM\/YYYY")
  With oDoc.SelectSingleNode("//Valute[CharCode='" & UCase(Cur) & "']")
    CbrNew = Val(Replace(.SelectSingleNode("Value").Text, ",", ".")) / Val(.SelectSingleNode("Nominal").Text)
  End With
End Function

Чтобы получить курс USD на текущий день, можно параметры даты и валюты упустить:
=CbrNew() - посчитает 1 раз
или =CbrNew(СЕГОДНЯ()) - будет пересчитываться каждый раз
Другие примеры:
=CbrNew(;"EUR")
=CbrNew("24.08.2022";"TRY") но лучше избегать текстовых значений даты, см. ниже
=CbrNew(ДАТА(2022;8;24); "TRY")
=CbrNew(A1; "TRY") где дата - в A1, это оптимальный вариант, т.к. пересчет будет только при изменении A1

Надеюсь, что Николай в новой версии Plex использует такой же код для функции CBR().
Изменено: ZVI - 08.09.2022 22:23:24
 
ZVI, Доброго дня, Владимир! Спасибо большое за развернутый ответ и вариант решения проблемы!
Изменено: Татьяна Агафонова - 07.09.2022 17:19:42
 
Цитата
Татьяна Агафонова написала: Спасибо большое
Добрый вечер, Татьяна! Рад помочь  :)

P.S. Но если были сделаны наработки/шаблоны для многих пользователей Plex, то придется таки ждать обновления CBR в PLEX.
Изменено: ZVI - 08.09.2022 22:16:06
Страницы: 1
Читают тему (гостей: 1)
Наверх