Страницы: 1
RSS
Отсортировать месяца сезона продаж без разрыва и представить в виде первый-последний
 
Добрый день!
Из 1с вытягиваю таблицу сезонности по товарам. Месяца идут последовательно январь-декабрь.
Сезонность у товаров разная, где-то - лето, где-то зима.
У зимних товаров сезонность представлена: январь, февраль, сентябрь, октябрь, ноябрь, декабрь.
Помогите отсортировать месяца по порядку сезона - сентябрь, октябрь, ноябрь, декабрь, январь, февраль
И представить в виде интервала сентябрь - февраль.
Спасибо!
 
=PROPER(IF(MAX(IF(ISNUMBER(FIND(MID("  янвфевмарапрмайиюниюлавгсеноктноядек";ROW($1:$12)*3;3);D4));ROW($1:$12)))-MIN(IF(ISNUMBER(FIND(MID("  янвфевмарапрмайиюниюлавгсеноктноядек";ROW($1:$12)*3;3);D4));ROW($1:$12)))=LEN(D4)-LEN(SUBSTITUTE(D4;",";));
LEFT(D4;FIND(",";D4&",")-1)&" - "&TRIM(RIGHT(SUBSTITUTE(D4;",";REPT(" ";10));10));
TEXT(EDATE(DATE(;MAX(IF(ISERROR(FIND(MID("  янвфевмарапрмайиюниюлавгсеноктноядек";ROW($1:$12)*3;3);D4));ROW($1:$12)));1);1);"ММММ -")&
TEXT(EDATE(DATE(;MIN(IF(ISERROR(FIND(MID("  янвфевмарапрмайиюниюлавгсеноктноядек";ROW($1:$12)*3;3);D4));ROW($1:$12)));1);-1);"ММММ") ))
Изменено: БМВ - 10.08.2020 13:49:24
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо!
Забыл указать, хотелось бы решение в PQ
 
вариант в Power Qery
Код
let
    Source    = Excel.CurrentWorkbook(){[Name="Таблица1_2"]}[Content],
    NewPeriod = Table.AddColumn(Source, "Пользовательская", each let 
                    period = List.Buffer(Text.Split([period],", ")),
                    num    = List.Buffer(List.Transform(period,each Date.Month(Date.From(_&"1")))),
                    sorted = List.Sort(
                                 List.Generate(
                                     ()=> [i=0,m=num{i}?,y=1],
                                     each [m]<>null,
                                     each [i=[i]+1,m=num{i}?,y=[y]-(if m>[m]+1 then 1 else 0)], 
                                     each period{[i]} meta [d=#date([y],[m],1)]
                                 ),
                                 each Value.Metadata(_)[d]
                             ),
                    result  = Text.Combine(List.RemoveRange(sorted,1,List.Count(num)-2),"-")
                in result)
in
    NewPeriod
 
Андрей Лящук, для строк, где месяца не по порядку выдает ошибку: Expression.Error: Операция Date завершилась неудачей, поскольку результат находится вне диапазона допустимых значений.
 
Цитата
Andrey_S написал:
абыл указать, хотелось бы решение в PQ
ну ядрен батон :-)
По вопросам из тем форума, личку не читаю.
 
Андрей Лящук, начальное значение "у" исправил  с 1 на 2. Все сработало без ошибок.
Спасибо за решение!
Страницы: 1
Наверх