На http://minfin.com.ua/currency/nbu/ курс НБУ представлен не в виде таблицы, а по конкретному дню. Т.е. чтобы узнать курс, приходится выбирать интересующий день. Все проще с курсом межбанка. Делаешь через PowerQuery запрос на http://minfin.com.ua/currency/mb/archive/usd/ и получаешь готовую таблицу с датами и курсами. Вопрос: "Как в Excel загрузить инфо с курсом НБУ в табличной форме за месяц"? Например, используя PowerQuery.
На http://minfin.com.ua/currency/nbu/ курс НБУ представлен не в виде таблицы, а по конкретному дню. Т.е. чтобы узнать курс, приходится выбирать интересующий день. Все проще с курсом межбанка. Делаешь через PowerQuery запрос на http://minfin.com.ua/currency/mb/archive/usd/ и получаешь готовую таблицу с датами и курсами. Вопрос: "Как в Excel загрузить инфо с курсом НБУ в табличной форме за месяц"? Например, используя PowerQuery.Viper25
Function курс(Optional CurrencyName As String = "usd", Optional ByVal RateDate As Date) As Double 'xml v6 Dim n&, s, myRequest As Object, D As Double On Error Resume Next If CurrencyName = "" Then CurrencyName = "usd" If RateDate = 0 Then RateDate = Date If Len(CurrencyName) <> 3 Then Exit Function Else CurrencyName = UCase(CurrencyName) Set myRequest = New XMLHTTP60 myRequest.Open "GET", "http://tables.finance.ua/ru/currency/official/~/1/" & Format(RateDate, "YYYY\/MM\/DD"), False myRequest.send s = myRequest.responseText ' Debug.Print s n = InStr(1, s, "{""" & CurrencyName & """:") If n = 0 Then Exit Function s = Split(s, "{""" & CurrencyName & """:", 2)(1) s = Split(s, "}")(0) D = Val(s) курс = D End Function
[/vba] только она не с минфина берет данные. В приложении пример на этот месяц - дальше можно просто тянуть формулу вниз еще тут была похожая тема
а я юдф-ку пользую: [vba]
Код
Function курс(Optional CurrencyName As String = "usd", Optional ByVal RateDate As Date) As Double 'xml v6 Dim n&, s, myRequest As Object, D As Double On Error Resume Next If CurrencyName = "" Then CurrencyName = "usd" If RateDate = 0 Then RateDate = Date If Len(CurrencyName) <> 3 Then Exit Function Else CurrencyName = UCase(CurrencyName) Set myRequest = New XMLHTTP60 myRequest.Open "GET", "http://tables.finance.ua/ru/currency/official/~/1/" & Format(RateDate, "YYYY\/MM\/DD"), False myRequest.send s = myRequest.responseText ' Debug.Print s n = InStr(1, s, "{""" & CurrencyName & """:") If n = 0 Then Exit Function s = Split(s, "{""" & CurrencyName & """:", 2)(1) s = Split(s, "}")(0) D = Val(s) курс = D End Function
[/vba] только она не с минфина берет данные. В приложении пример на этот месяц - дальше можно просто тянуть формулу вниз еще тут была похожая темаSLAVICK
let aa = Web.Page(Web.Contents("http://minfin.com.ua/currency/nbu/"&DateTime.ToText(Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content]{0}[Column1],"yyyy-MM-dd")&"/")), bb = Table.RemoveRowsWithErrors(Table.AddColumn(aa, "Custom", each [Data][Дата]), {"Custom"}), cc = Table.AddColumn(Table.RemoveColumns(bb,{"Custom"}), "Custom", each Table.ColumnNames([Data])){0}[Custom], dd = Table.SelectColumns(Table.ExpandTableColumn(bb, "Data", cc),cc), ee = Table.ReplaceValue(Table.ReplaceValue(dd,".",Text.Range(Text.From(1/2),1,1),Replacer.ReplaceText,cc),"+ ","+",Replacer.ReplaceText,cc), ff = List.Range(cc,1,1){0}, gg = Table.RenameColumns(Table.TransformColumns(Table.SplitColumn(ee,ff,Splitter.SplitTextByDelimiter("#(lf)"),{ff,"Динамика"}),{},Text.Trim),{{ff, "Курс НБУ"}}), hh = Table.TransformColumnTypes(gg,{{"Курс НБУ", type number}, {"Динамика", type number}, {"За неделю", type number}, {"Дата", type date}, {"Обновляется", type text}, {"КУРС К ГРИВНЕ", type text}}) in hh
let aa = Web.Page(Web.Contents("http://minfin.com.ua/currency/nbu/"&DateTime.ToText(Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content]{0}[Column1],"yyyy-MM-dd")&"/")), bb = Table.RemoveRowsWithErrors(Table.AddColumn(aa, "Custom", each [Data][Дата]), {"Custom"}), cc = Table.AddColumn(Table.RemoveColumns(bb,{"Custom"}), "Custom", each Table.ColumnNames([Data])){0}[Custom], dd = Table.SelectColumns(Table.ExpandTableColumn(bb, "Data", cc),cc), ee = Table.ReplaceValue(Table.ReplaceValue(dd,".",Text.Range(Text.From(1/2),1,1),Replacer.ReplaceText,cc),"+ ","+",Replacer.ReplaceText,cc), ff = List.Range(cc,1,1){0}, gg = Table.RenameColumns(Table.TransformColumns(Table.SplitColumn(ee,ff,Splitter.SplitTextByDelimiter("#(lf)"),{ff,"Динамика"}),{},Text.Trim),{{ff, "Курс НБУ"}}), hh = Table.TransformColumnTypes(gg,{{"Курс НБУ", type number}, {"Динамика", type number}, {"За неделю", type number}, {"Дата", type date}, {"Обновляется", type text}, {"КУРС К ГРИВНЕ", type text}}) in hh