Не мог даже подумать что символы станут такой проблемой. При импорте данных, импортируются всевозможные лишние символы, как их обрезать? Пример: Есть в таблице, ячейка и там значение "+15°", нужно импортировать значение 15, и все
В дальнейшем нужно будет эти значения сравнивать и на сколько корректно произойдет сравнение с такими символами непонятно, да и не удобно это. Таблица все таже: https://docs.google.com/spreads....dit
Есть даже примеры листов (ПРИМЕР1 и ПРИМЕР2).
Что только не пробовал, не знаю что еще сделать. p.s. способ найти и заменить не подойдет, так как данные постоянно обновляются. Может макрос можно сделать как-то? но тогда нужно его производить с достаточно большой частотой, чтобы можно было видеть сразу результаты. Может есть какой-то формат данных? Зашел в тупик (
Не мог даже подумать что символы станут такой проблемой. При импорте данных, импортируются всевозможные лишние символы, как их обрезать? Пример: Есть в таблице, ячейка и там значение "+15°", нужно импортировать значение 15, и все
В дальнейшем нужно будет эти значения сравнивать и на сколько корректно произойдет сравнение с такими символами непонятно, да и не удобно это. Таблица все таже: https://docs.google.com/spreads....dit
Есть даже примеры листов (ПРИМЕР1 и ПРИМЕР2).
Что только не пробовал, не знаю что еще сделать. p.s. способ найти и заменить не подойдет, так как данные постоянно обновляются. Может макрос можно сделать как-то? но тогда нужно его производить с достаточно большой частотой, чтобы можно было видеть сразу результаты. Может есть какой-то формат данных? Зашел в тупик (terat
=ArrayFormula({{"Дата",TODAY()};{{"Макс";"Мин";"Средняя"},ArrayFormula(IMPORTXML("http://www.meteocenter.asia/?m=e&p=28698","//table[@class='tab_z']//td[contains(text(),'"&Textjoin(" температура') or contains(text(),'",0,"Мин.","Макс.","Среднесуточная")&" температура')]/following-sibling::td[1]"))}})
[/vba][vba]
Код
=Transpose(Query(Arrayformula(iferror(--REGEXREPLACE(IMPORTHTML("http://www.pogodaiklimat.ru/forecast/28698_7.htm","table",0)&"","(?:(\d+)*\x0a.*)|\+","$1"),)),"select Col1, Min(Col4),Avg(Col4),Max(Col4) group by Col1 label Col1 'Дата',Min(Col4) 'Минимальная температура', Avg(Col4) 'Средняя температура',Max(Col4) 'Максимальная температура'"))
[/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 ))))/4,1)),iferror(--REGEXREPLACE(IMPORTHTML("https://www.yr.no/place/Russia/Omsk/Omsk/long.html","table",3)&"","\/[^\d]|.*\–|[^\d\/:.]",""),)}),"Select max(Col2),Min(Col5),Avg(Col5),Max(Col5) group by Col1 label Max(Col2) 'Дата',Min(Col5) 'Минимальная температура', Avg(Col5) 'Средняя температура',Max(Col5) 'Максимальная температура' format Max(Col2) 'dd.MM.YYYY'")))
[/vba]
[vba]
Код
=ArrayFormula({{"Дата",TODAY()};{{"Макс";"Мин";"Средняя"},ArrayFormula(IMPORTXML("http://www.meteocenter.asia/?m=e&p=28698","//table[@class='tab_z']//td[contains(text(),'"&Textjoin(" температура') or contains(text(),'",0,"Мин.","Макс.","Среднесуточная")&" температура')]/following-sibling::td[1]"))}})
[/vba][vba]
Код
=Transpose(Query(Arrayformula(iferror(--REGEXREPLACE(IMPORTHTML("http://www.pogodaiklimat.ru/forecast/28698_7.htm","table",0)&"","(?:(\d+)*\x0a.*)|\+","$1"),)),"select Col1, Min(Col4),Avg(Col4),Max(Col4) group by Col1 label Col1 'Дата',Min(Col4) 'Минимальная температура', Avg(Col4) 'Средняя температура',Max(Col4) 'Максимальная температура'"))
[/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 ))))/4,1)),iferror(--REGEXREPLACE(IMPORTHTML("https://www.yr.no/place/Russia/Omsk/Omsk/long.html","table",3)&"","\/[^\d]|.*\–|[^\d\/:.]",""),)}),"Select max(Col2),Min(Col5),Avg(Col5),Max(Col5) group by Col1 label Max(Col2) 'Дата',Min(Col5) 'Минимальная температура', Avg(Col5) 'Средняя температура',Max(Col5) 'Максимальная температура' format Max(Col2) 'dd.MM.YYYY'")))
1. По последней формуле. Что-то с датой не так. Вот так импортируется: 05.05.2020 05.06.2020 05.07.2020 05.08.2020 05.09.2020 05.10.2020 05.11.2020 05.12.2020 30.12.1899 30.12.1899
2. Как можно во втором и третьем случае отсортировать выборку так: максимальная, минимальная, средняя температура. Я имею ввиду порядок? от чего это зависит от данных на сайте или можно силами google docs это сделать?
Есть еще пара моментов.
1. По последней формуле. Что-то с датой не так. Вот так импортируется: 05.05.2020 05.06.2020 05.07.2020 05.08.2020 05.09.2020 05.10.2020 05.11.2020 05.12.2020 30.12.1899 30.12.1899
2. Как можно во втором и третьем случае отсортировать выборку так: максимальная, минимальная, средняя температура. Я имею ввиду порядок? от чего это зависит от данных на сайте или можно силами google docs это сделать?terat
Спасибо! Правда логику все равно не могу понять, на примере других ресурсов, с Select. От чего зависит? к примеру вот еще https://omsk.nuipogoda.ru/погода-на-завтра, как можно отсеять пустые строки? Если идти по второму примеру, с смещением col1, то выводится дата в перемешку с бредом, хотя столбец следующий.
Спасибо! Правда логику все равно не могу понять, на примере других ресурсов, с Select. От чего зависит? к примеру вот еще https://omsk.nuipogoda.ru/погода-на-завтра, как можно отсеять пустые строки? Если идти по второму примеру, с смещением col1, то выводится дата в перемешку с бредом, хотя столбец следующий.terat
там внутри ячеек таблицы есть вложенные элементы (div, span , br) [vba]
Код
=Transpose(Query(ArrayFormula(--RegexReplace( ImportXML("https://omsk.nuipogoda.ru/погода-на-завтра","//table[@class='weather']//span[@class='ht']"),"[+°]","")),"select date '"&text(today()+1,"yyyy-MM-dd")&"',min(Col1),max(Col1),avg(Col1) group by date '"&text(today()+1,"yyyy-MM-dd")&"' label Min(Col1) 'Минимальная температура', Avg(Col1) 'Средняя температура',Max(Col1) 'Максимальная температура', date '"&text(today()+1,"yyyy-MM-dd")&"' 'Дата' format date '"&text(today()+1,"yyyy-MM-dd")&"' 'dd.MM.YYYY'"))
[/vba]
там внутри ячеек таблицы есть вложенные элементы (div, span , br) [vba]
Код
=Transpose(Query(ArrayFormula(--RegexReplace( ImportXML("https://omsk.nuipogoda.ru/погода-на-завтра","//table[@class='weather']//span[@class='ht']"),"[+°]","")),"select date '"&text(today()+1,"yyyy-MM-dd")&"',min(Col1),max(Col1),avg(Col1) group by date '"&text(today()+1,"yyyy-MM-dd")&"' label Min(Col1) 'Минимальная температура', Avg(Col1) 'Средняя температура',Max(Col1) 'Максимальная температура', date '"&text(today()+1,"yyyy-MM-dd")&"' 'Дата' format date '"&text(today()+1,"yyyy-MM-dd")&"' 'dd.MM.YYYY'"))
Здесь нет конкретной ссылки. По первой вообще возможно ли? Тут достаточно интересно выходит, дата на сегодня подставляется автоматически и выводится, а надо отнимать значение и переносится на прошлый день.
По второму варианту, таблицы расположены в разных табах (вкладках), нужно из "forecastTable" как правильно путь проложить до него?
Еще пример таблицы, от которой, чтобы получить ответ, нужно в запросе подготовить как-то какая область, город и период https://meteoinfo.ru/forecasts
Здесь нет конкретной ссылки. По первой вообще возможно ли? Тут достаточно интересно выходит, дата на сегодня подставляется автоматически и выводится, а надо отнимать значение и переносится на прошлый день.
По второму варианту, таблицы расположены в разных табах (вкладках), нужно из "forecastTable" как правильно путь проложить до него?
Еще пример таблицы, от которой, чтобы получить ответ, нужно в запросе подготовить как-то какая область, город и период https://meteoinfo.ru/forecaststerat
Сообщение отредактировал terat - Суббота, 16.05.2020, 16:42
=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'"))