Подскажите пожалуйста есть задача отсортировать формулами хотя можно и макросом тогда это будет относится к этой теме Но можно и формулами. И так задача: В столбце "А" перечислены названия надо их отсортировать чтобы все одинаковые друг с другом сразу были и что самое хитрое нельзя разрушать сортировку которая уже произведена в столбце "B" Поясню. Мы не можем просто отсортировать от большего к меньшему иначе все водители будут в разнобой. Это как-то хитро делается или нет ? Местами пачки с водителями менять можно. Но один водитель должен быть всегда в одной куче. В страничке без сортировке которая прикреплена отдано по 200 строк для каждого из вариантов. 1 вариант это точка по одному контракту 2 вариант та же точка но по другому контракту 3 вариант другие точки где нет деления на контракты.
Не знаю надо ли приводить пример как было раньше так как теперь правила меняются. Теперь стало не одна одинаковая точка а две. Вот так в столбце "В" ищатся водители изначально
Эта страница уже с сортировкой и там все красиво но дальше надо каждую точку делать на два контракта и выводить две накладные. И возникает сложность с сортировкой.
Здравствуйте. С прошедшими праздниками!
Подскажите пожалуйста есть задача отсортировать формулами хотя можно и макросом тогда это будет относится к этой теме Но можно и формулами. И так задача: В столбце "А" перечислены названия надо их отсортировать чтобы все одинаковые друг с другом сразу были и что самое хитрое нельзя разрушать сортировку которая уже произведена в столбце "B" Поясню. Мы не можем просто отсортировать от большего к меньшему иначе все водители будут в разнобой. Это как-то хитро делается или нет ? Местами пачки с водителями менять можно. Но один водитель должен быть всегда в одной куче. В страничке без сортировке которая прикреплена отдано по 200 строк для каждого из вариантов. 1 вариант это точка по одному контракту 2 вариант та же точка но по другому контракту 3 вариант другие точки где нет деления на контракты.
Не знаю надо ли приводить пример как было раньше так как теперь правила меняются. Теперь стало не одна одинаковая точка а две. Вот так в столбце "В" ищатся водители изначально
Эта страница уже с сортировкой и там все красиво но дальше надо каждую точку делать на два контракта и выводить две накладные. И возникает сложность с сортировкой.koyaanisqatsi
Это я сделал по меню Данные-Сортировка. А там Основная по столбцу B и Дополнительная сортировка по столбцу A, галочка Мои данные содержат заголовки. Всего два клика мышки, если сортировка уже выполнялась. *Ну и строки с нулями я удалил.
Это я сделал по меню Данные-Сортировка. А там Основная по столбцу B и Дополнительная сортировка по столбцу A, галочка Мои данные содержат заголовки. Всего два клика мышки, если сортировка уже выполнялась. *Ну и строки с нулями я удалил.Светлый
Программировать проще, чем писать стихи.
Сообщение отредактировал Светлый - Четверг, 10.01.2019, 12:09
Почти то же самое (не совсем, но близко) макросом [vba]
Код
Sub sort2() Application.ScreenUpdating = 0 Application.Calculation = 3 r0_ = 3 With Cells(1) nr_ = .SpecialCells(xlLastCell).Row - r0_ + 1 nc_ = .SpecialCells(xlLastCell).Column End With With ActiveWorkbook.ActiveSheet.Sort .SortFields.Clear .SortFields.Add Key:=Cells(r0_, 2).Resize(nr_), Order:=xlDescending .SetRange Cells(r0_, 1).Resize(nr_, nc_) .Header = xlGuess .Apply r1_ = Cells(Rows.Count, 2).End(3).Row For i = r0_ To r1_ If Cells(i, 2) = "" Then Exit For Next i If i < r1_ Then Cells(i, 1).Resize(r1_ - i + 1).EntireRow.Delete .SortFields.Clear .SortFields.Add Key:=Cells(r0_, 2).Resize(i - r0_), Order:=xlAscending .SortFields.Add Key:=Cells(r0_, 1).Resize(i - r0_), Order:=xlAscending, DataOption:=xlSortNormal .SetRange Cells(r0_, 1).Resize(i - r0_, nc_) .Header = xlGuess .Apply End With Application.Calculation = 1 Application.ScreenUpdating = 1 End Sub
[/vba]
Почти то же самое (не совсем, но близко) макросом [vba]
Код
Sub sort2() Application.ScreenUpdating = 0 Application.Calculation = 3 r0_ = 3 With Cells(1) nr_ = .SpecialCells(xlLastCell).Row - r0_ + 1 nc_ = .SpecialCells(xlLastCell).Column End With With ActiveWorkbook.ActiveSheet.Sort .SortFields.Clear .SortFields.Add Key:=Cells(r0_, 2).Resize(nr_), Order:=xlDescending .SetRange Cells(r0_, 1).Resize(nr_, nc_) .Header = xlGuess .Apply r1_ = Cells(Rows.Count, 2).End(3).Row For i = r0_ To r1_ If Cells(i, 2) = "" Then Exit For Next i If i < r1_ Then Cells(i, 1).Resize(r1_ - i + 1).EntireRow.Delete .SortFields.Clear .SortFields.Add Key:=Cells(r0_, 2).Resize(i - r0_), Order:=xlAscending .SortFields.Add Key:=Cells(r0_, 1).Resize(i - r0_), Order:=xlAscending, DataOption:=xlSortNormal .SetRange Cells(r0_, 1).Resize(i - r0_, nc_) .Header = xlGuess .Apply End With Application.Calculation = 1 Application.ScreenUpdating = 1 End Sub
Светлый, Да у нас диспетчра руками сортировать не будут. надо чтобы это на автомате происходило. Теперь правда можно и без сортировки обойтись. Нашел другое решение моей проблемы. А вот нулевые строки бы как-то удалить формулой было бы здорово. Пробовал через индекс а он вроде бы текст не берет (
Светлый, Да у нас диспетчра руками сортировать не будут. надо чтобы это на автомате происходило. Теперь правда можно и без сортировки обойтись. Нашел другое решение моей проблемы. А вот нулевые строки бы как-то удалить формулой было бы здорово. Пробовал через индекс а он вроде бы текст не берет (koyaanisqatsi