let Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"МОЩНОСТЬ,#(lf)Вт", type date}}), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"МОЩНОСТЬ,#(lf)Вт"}, "Атрибут", "Значение") in #"Unpivoted Other Columns"
[/vba]
Здравствуйте Запрос Power Query [vba]
Код
let Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"МОЩНОСТЬ,#(lf)Вт", type date}}), #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"МОЩНОСТЬ,#(lf)Вт"}, "Атрибут", "Значение") in #"Unpivoted Other Columns"
Private Sub Bnt_НачальнаяДата_Click() 'выбираем начальную дату периода On Error Resume Next calendar.Show If calendar.Value > 0 Then Me.txt_НачальнаяДата.Value = Format(calendar.Value, "dd.mm.yyyy") End Sub
Private Sub Btn_КонечнаяДата_Click() 'выбираем конечную дату периода по клику On Error Resume Next calendar.Show If calendar.Value > 0 Then Me.txt_КонечнаяДата.Value = Format(calendar.Value, "dd.mm.yyyy") End Sub
Private Sub txt_КонечнаяДата_Change() DateFinish = CDate(Me.txt_КонечнаяДата) End Sub
Private Sub txt_НачальнаяДата_Change() DateStart = CDate(Me.txt_НачальнаяДата) End Sub
[/vba]
Добрый вечер [vba]
Код
Private Sub Bnt_НачальнаяДата_Click() 'выбираем начальную дату периода On Error Resume Next calendar.Show If calendar.Value > 0 Then Me.txt_НачальнаяДата.Value = Format(calendar.Value, "dd.mm.yyyy") End Sub
Private Sub Btn_КонечнаяДата_Click() 'выбираем конечную дату периода по клику On Error Resume Next calendar.Show If calendar.Value > 0 Then Me.txt_КонечнаяДата.Value = Format(calendar.Value, "dd.mm.yyyy") End Sub
Private Sub txt_КонечнаяДата_Change() DateFinish = CDate(Me.txt_КонечнаяДата) End Sub
Private Sub txt_НачальнаяДата_Change() DateStart = CDate(Me.txt_НачальнаяДата) End Sub
Здравствуйте Расширение Excel Live Server for VBA для VSCode после установки нужно создать папку tmp\vba в папке расширения (%homepath%\.vscode\extensions\local-smart.excel-live-server-1.0.0\)
upd. Если достаточно редактирования кода без запуска макросов, то можно использовать Text Edit Anywhere
Здравствуйте Расширение Excel Live Server for VBA для VSCode после установки нужно создать папку tmp\vba в папке расширения (%homepath%\.vscode\extensions\local-smart.excel-live-server-1.0.0\)
upd. Если достаточно редактирования кода без запуска макросов, то можно использовать Text Edit Anywherekrosav4ig
Макросы в модулях листов и книги игнорируются, импортируются только стандартные модули, модули классов и модули форм Alt+ЕМБ нужно убедиться, что установлена галочка "Доверять доступ к программной модели VBA" При импорте модулей в VSCode они удаляются из файла. Чтобы вернуть их обратно нужно сохранить любой из импортированных модулей в VSCode. Или заполучить от разработчика пароль от vba проекта файла autoload.xlsm, лежащего в %homepath%\.vscode\extensions\local-smart.excel-live-server-1.0.0\excel-live-server и закомментировать удаление модулей. Контакты для связи с разработчиком можно посмотреть в VSCode в информации о расширении (Ctrl+Shit+X)
Макросы в модулях листов и книги игнорируются, импортируются только стандартные модули, модули классов и модули форм Alt+ЕМБ нужно убедиться, что установлена галочка "Доверять доступ к программной модели VBA" При импорте модулей в VSCode они удаляются из файла. Чтобы вернуть их обратно нужно сохранить любой из импортированных модулей в VSCode. Или заполучить от разработчика пароль от vba проекта файла autoload.xlsm, лежащего в %homepath%\.vscode\extensions\local-smart.excel-live-server-1.0.0\excel-live-server и закомментировать удаление модулей. Контакты для связи с разработчиком можно посмотреть в VSCode в информации о расширении (Ctrl+Shit+X)krosav4ig
Function ПримечаниеТекст(Ячейка As Range, Текст As String) On Error Resume Next Ячейка.AddComment.Visible = False Ячейка.Comment.Text Текст End Function
[/vba]
Здравствуйте [vba]
Код
Function ПримечаниеТекст(Ячейка As Range, Текст As String) On Error Resume Next Ячейка.AddComment.Visible = False Ячейка.Comment.Text Текст End Function
=Transpose(Query(ARRAYFORMULA(iferror(--substitute(REGEXREPLACE(IMPORTHTML("http://www.pogodaiklimat.ru/forecast/28698_7.htm","table",0)&"","(\d+)(\.)(\d+)\x0a.*$","$3/$1/"&year(now())),"+",""),)),"select Col1, Min(Col4),Max(Col4),Avg(Col4),Avg(Col7) group by Col1 label Col1 'Дата',Min(Col4) 'Минимальная температура', Avg(Col4) 'Средняя температура',Max(Col4) 'Максимальная температура',Avg(Col7) 'Среднее количество осадков' format Col1'dd.MM.YYYY'"))
[/vba] [vba]
Код
=ArrayFormula(Transpose(Query(ArrayFormula({Arrayformula(CEILING((Row(A1:Index(A:A,Rows(IMPORTHTML("https://www.yr.no/place/Russia/Omsk/Omsk/long.html","table",3 ))))-1)/4,1)),iferror(--REGEXREPLACE(IMPORTHTML("https://www.yr.no/place/Russia/Omsk/Omsk/long.html","table",3)&"","(\d{2})(\/)(\d{2})\/(\d{4})|[^\d\/:.]|.*\–","$3$2$1$2$4"),)}),"Select max(Col2),Min(Col5),Max(Col5),Avg(Col5),Avg(Col6) where Col1>0 group by Col1 label Max(Col2) 'Дата',Min(Col5) 'Минимальная температура', Avg(Col5) 'Средняя температура',Max(Col5) 'Максимальная температура', Avg(Col6) 'Среднее количество осадков' format Max(Col2) 'dd.MM.YYYY'")))
[/vba] [vba]
Код
=Transpose(Query(ArrayFormula({Int((Row(1:20)-1)/4)+Today(),(Array_Constrain(Split(Importxml("https://rp5.ru/Погода_в_Омске","(((//table[@id='forecastTable'])[1]/tr[.//*[contains(text(),'Температура')]]/td[starts-with(@class,'n ')])[1]/preceding-sibling::td)[last()]/following-sibling::td/div[@class='t_0']"),"+"),20,1))}),"Select Col1,Min(Col2),Max(Col2),Avg(Col2) group by Col1 label Col1 'Дата',Min(Col2) 'Минимальная температура', Avg(Col2) 'Средняя температура',Max(Col2) 'Максимальная температура' format Col1 'dd.MM.YYYY'"))
[/vba]
[vba]
Код
=Transpose(Query(ARRAYFORMULA(iferror(--substitute(REGEXREPLACE(IMPORTHTML("http://www.pogodaiklimat.ru/forecast/28698_7.htm","table",0)&"","(\d+)(\.)(\d+)\x0a.*$","$3/$1/"&year(now())),"+",""),)),"select Col1, Min(Col4),Max(Col4),Avg(Col4),Avg(Col7) group by Col1 label Col1 'Дата',Min(Col4) 'Минимальная температура', Avg(Col4) 'Средняя температура',Max(Col4) 'Максимальная температура',Avg(Col7) 'Среднее количество осадков' format Col1'dd.MM.YYYY'"))
[/vba] [vba]
Код
=ArrayFormula(Transpose(Query(ArrayFormula({Arrayformula(CEILING((Row(A1:Index(A:A,Rows(IMPORTHTML("https://www.yr.no/place/Russia/Omsk/Omsk/long.html","table",3 ))))-1)/4,1)),iferror(--REGEXREPLACE(IMPORTHTML("https://www.yr.no/place/Russia/Omsk/Omsk/long.html","table",3)&"","(\d{2})(\/)(\d{2})\/(\d{4})|[^\d\/:.]|.*\–","$3$2$1$2$4"),)}),"Select max(Col2),Min(Col5),Max(Col5),Avg(Col5),Avg(Col6) where Col1>0 group by Col1 label Max(Col2) 'Дата',Min(Col5) 'Минимальная температура', Avg(Col5) 'Средняя температура',Max(Col5) 'Максимальная температура', Avg(Col6) 'Среднее количество осадков' format Max(Col2) 'dd.MM.YYYY'")))
[/vba] [vba]
Код
=Transpose(Query(ArrayFormula({Int((Row(1:20)-1)/4)+Today(),(Array_Constrain(Split(Importxml("https://rp5.ru/Погода_в_Омске","(((//table[@id='forecastTable'])[1]/tr[.//*[contains(text(),'Температура')]]/td[starts-with(@class,'n ')])[1]/preceding-sibling::td)[last()]/following-sibling::td/div[@class='t_0']"),"+"),20,1))}),"Select Col1,Min(Col2),Max(Col2),Avg(Col2) group by Col1 label Col1 'Дата',Min(Col2) 'Минимальная температура', Avg(Col2) 'Средняя температура',Max(Col2) 'Максимальная температура' format Col1 'dd.MM.YYYY'"))
let Source = List.Buffer(List.Transform(Table.ToColumns(Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content]),List.RemoveNulls)), fn = (n,k,optional i, optional j)=> let i = if i=null then 0 else i, j = if j=null then 0 else j, tbl = Table.FromRecords( List.TransformMany( {i..n-k+j}, each Source{_}, (a,b)=>[x=b]&(if j<k-1 then [y=@fn(n,k,a+1,j+1)] else []) ) ) in if j<k-1 then Table.ExpandTableColumn( tbl, "y", {"x"}&List.Transform({j+1..k-2}, each "x"&Text.From(_+1)), List.Transform({j+1..k-1}, each "x"&Text.From(_)) ) else tbl, ret = fn(List.Count(Source),4) in ret
let Source = List.Buffer(List.Transform(Table.ToColumns(Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content]),List.RemoveNulls)), fn = (n,k,optional i, optional j)=> let i = if i=null then 0 else i, j = if j=null then 0 else j, tbl = Table.FromRecords( List.TransformMany( {i..n-k+j}, each Source{_}, (a,b)=>[x=b]&(if j<k-1 then [y=@fn(n,k,a+1,j+1)] else []) ) ) in if j<k-1 then Table.ExpandTableColumn( tbl, "y", {"x"}&List.Transform({j+1..k-2}, each "x"&Text.From(_+1)), List.Transform({j+1..k-1}, each "x"&Text.From(_)) ) else tbl, ret = fn(List.Count(Source),4) in ret