Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сортировка данных с учетом критерия одинаковых названий - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Сортировка данных с учетом критерия одинаковых названий (Формулы/Formulas)
Сортировка данных с учетом критерия одинаковых названий
koyaanisqatsi Дата: Четверг, 10.01.2019, 10:21 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 701
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте. С прошедшими праздниками!

Подскажите пожалуйста есть задача отсортировать формулами хотя можно и макросом тогда это будет относится к этой теме
Но можно и формулами.
И так задача: В столбце "А" перечислены названия надо их отсортировать чтобы все одинаковые друг с другом сразу были и что самое хитрое нельзя разрушать сортировку которая уже произведена в столбце "B"
Поясню. Мы не можем просто отсортировать от большего к меньшему иначе все водители будут в разнобой.
Это как-то хитро делается или нет ?
Местами пачки с водителями менять можно. Но один водитель должен быть всегда в одной куче.
В страничке без сортировке которая прикреплена отдано по 200 строк для каждого из вариантов. 1 вариант это точка по одному контракту 2 вариант та же точка но по другому контракту 3 вариант другие точки где нет деления на контракты.

Не знаю надо ли приводить пример как было раньше так как теперь правила меняются. Теперь стало не одна одинаковая точка а две.
Вот так в столбце "В" ищатся водители изначально
Код
=ЕСЛИОШИБКА(ИНДЕКС('Рейсы Вторник'!A$2:T$2;СУММ(('Рейсы Вторник'!B$2:T$29=A3)*СТОЛБЕЦ(B$2:T$30)));"")

А вот так в Столбце "А" ищатся точки
Код
=ЕСЛИОШИБКА(ИНДЕКС('Рейсы Вторник'!B$4:R$28;ОСТАТ(НАИМЕНЬШИЙ(ЕСЛИ('Рейсы Вторник'!B$4:R$28<>0;СТОЛБЕЦ(A$4:Q$28)+СТРОКА(A$1:Q$25)/1000);СТРОКА(A1));1)*1000;НАИМЕНЬШИЙ(ЕСЛИ('Рейсы Вторник'!B$4:R$28<>0;СТОЛБЕЦ(A$4:Q$28));СТРОКА(A1)));"")

Эта страница уже с сортировкой и там все красиво но дальше надо каждую точку делать на два контракта и выводить две накладные. И возникает сложность с сортировкой.
К сообщению приложен файл: 2_.xlsx(92.4 Kb)
 
Ответить
СообщениеЗдравствуйте. С прошедшими праздниками!

Подскажите пожалуйста есть задача отсортировать формулами хотя можно и макросом тогда это будет относится к этой теме
Но можно и формулами.
И так задача: В столбце "А" перечислены названия надо их отсортировать чтобы все одинаковые друг с другом сразу были и что самое хитрое нельзя разрушать сортировку которая уже произведена в столбце "B"
Поясню. Мы не можем просто отсортировать от большего к меньшему иначе все водители будут в разнобой.
Это как-то хитро делается или нет ?
Местами пачки с водителями менять можно. Но один водитель должен быть всегда в одной куче.
В страничке без сортировке которая прикреплена отдано по 200 строк для каждого из вариантов. 1 вариант это точка по одному контракту 2 вариант та же точка но по другому контракту 3 вариант другие точки где нет деления на контракты.

Не знаю надо ли приводить пример как было раньше так как теперь правила меняются. Теперь стало не одна одинаковая точка а две.
Вот так в столбце "В" ищатся водители изначально
Код
=ЕСЛИОШИБКА(ИНДЕКС('Рейсы Вторник'!A$2:T$2;СУММ(('Рейсы Вторник'!B$2:T$29=A3)*СТОЛБЕЦ(B$2:T$30)));"")

А вот так в Столбце "А" ищатся точки
Код
=ЕСЛИОШИБКА(ИНДЕКС('Рейсы Вторник'!B$4:R$28;ОСТАТ(НАИМЕНЬШИЙ(ЕСЛИ('Рейсы Вторник'!B$4:R$28<>0;СТОЛБЕЦ(A$4:Q$28)+СТРОКА(A$1:Q$25)/1000);СТРОКА(A1));1)*1000;НАИМЕНЬШИЙ(ЕСЛИ('Рейсы Вторник'!B$4:R$28<>0;СТОЛБЕЦ(A$4:Q$28));СТРОКА(A1)));"")

Эта страница уже с сортировкой и там все красиво но дальше надо каждую точку делать на два контракта и выводить две накладные. И возникает сложность с сортировкой.

Автор - koyaanisqatsi
Дата добавления - 10.01.2019 в 10:21
Светлый Дата: Четверг, 10.01.2019, 11:24 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1202
Репутация: 309 ±
Замечаний: 0% ±

Excel 2010
А если выбрать сортировку и добавить нужное количество уровней сортировки?
К сообщению приложен файл: 2-1.xlsx(48.6 Kb)


Программировать проще, чем писать стихи.
 
Ответить
СообщениеА если выбрать сортировку и добавить нужное количество уровней сортировки?

Автор - Светлый
Дата добавления - 10.01.2019 в 11:24
koyaanisqatsi Дата: Четверг, 10.01.2019, 11:27 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 701
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
Светлый, Вот так и надо. только это надо либо ВБА делать либо формулой. А Так прям то что надо !
 
Ответить
СообщениеСветлый, Вот так и надо. только это надо либо ВБА делать либо формулой. А Так прям то что надо !

Автор - koyaanisqatsi
Дата добавления - 10.01.2019 в 11:27
Светлый Дата: Четверг, 10.01.2019, 12:08 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1202
Репутация: 309 ±
Замечаний: 0% ±

Excel 2010
Это я сделал по меню Данные-Сортировка. А там Основная по столбцу B и Дополнительная сортировка по столбцу A, галочка Мои данные содержат заголовки.
Всего два клика мышки, если сортировка уже выполнялась.
*Ну и строки с нулями я удалил.


Программировать проще, чем писать стихи.

Сообщение отредактировал Светлый - Четверг, 10.01.2019, 12:09
 
Ответить
СообщениеЭто я сделал по меню Данные-Сортировка. А там Основная по столбцу B и Дополнительная сортировка по столбцу A, галочка Мои данные содержат заголовки.
Всего два клика мышки, если сортировка уже выполнялась.
*Ну и строки с нулями я удалил.

Автор - Светлый
Дата добавления - 10.01.2019 в 12:08
_Boroda_ Дата: Четверг, 10.01.2019, 14:40 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15575
Репутация: 6075 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Почти то же самое (не совсем, но близко) макросом
[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]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПочти то же самое (не совсем, но близко) макросом
[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]

Автор - _Boroda_
Дата добавления - 10.01.2019 в 14:40
koyaanisqatsi Дата: Четверг, 10.01.2019, 17:22 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 701
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, Спасибо огромное. предварительно это работает, требует более детальной проверки которая мне не доступна пока.
 
Ответить
Сообщение_Boroda_, Спасибо огромное. предварительно это работает, требует более детальной проверки которая мне не доступна пока.

Автор - koyaanisqatsi
Дата добавления - 10.01.2019 в 17:22
koyaanisqatsi Дата: Пятница, 18.01.2019, 11:37 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 701
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
Светлый, Да у нас диспетчра руками сортировать не будут. надо чтобы это на автомате происходило.
Теперь правда можно и без сортировки обойтись. Нашел другое решение моей проблемы. А вот нулевые строки бы как-то удалить формулой было бы здорово. Пробовал через индекс а он вроде бы текст не берет (
 
Ответить
СообщениеСветлый, Да у нас диспетчра руками сортировать не будут. надо чтобы это на автомате происходило.
Теперь правда можно и без сортировки обойтись. Нашел другое решение моей проблемы. А вот нулевые строки бы как-то удалить формулой было бы здорово. Пробовал через индекс а он вроде бы текст не берет (

Автор - koyaanisqatsi
Дата добавления - 18.01.2019 в 11:37
Светлый Дата: Пятница, 18.01.2019, 13:25 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1202
Репутация: 309 ±
Замечаний: 0% ±

Excel 2010
На втором листе в A2 пишем массивную формулу:
Код
=ОКРУГЛ(ОСТАТ(НАИМЕНЬШИЙ(СТРОКА(Лист1!$2:$514)%%-СЧЁТЕСЛИ(Лист1!B$2:B$514;">="&Лист1!B$2:B$514)/1%%-СЧЁТЕСЛИ(Лист1!A$2:A$514;">="&Лист1!A$2:A$514);СТРОКА(A1));1)/1%%;)
Код
=ОКРУГЛ(ОСТАТ(НАИБОЛЬШИЙ(СТРОКА(Лист1!$2:$514)%%-МУМНОЖ(-(Лист1!B$2:B$514<=ТРАНСП(Лист1!B$2:B$514));СТРОКА($2:$514)^0)/1%%-МУМНОЖ(-(Лист1!A$2:A$514<=ТРАНСП(Лист1!A$2:A$514));СТРОКА($2:$514)^0);СТРОКА(A1));1)/1%%;)
а лучше:
Код
=ОКРУГЛ(ОСТАТ(НАИБОЛЬШИЙ(СТРОКА(Лист1!$2:$514)%%-МУМНОЖ(-(ЕСЛИ(Лист1!B$2:B$514="";"яяя";Лист1!B$2:B$514)<=ТРАНСП(Лист1!B$2:B$514));СТРОКА($2:$514)^0)/1%%-МУМНОЖ(-(Лист1!A$2:A$514<=ТРАНСП(Лист1!A$2:A$514));СТРОКА($2:$514)^0);СТРОКА(A1));1)/1%%;)
Код
=ОКРУГЛ(ОСТАТ(НАИМЕНЬШИЙ(СТРОКА($2:$514)%%+МУМНОЖ(-(ЛЕВБ(ЕСЛИ(Лист1!B$2:B$514="";"яяя";Лист1!B$2:B$514)&ПОВТОР(" ";24);24)&ЛЕВБ(Лист1!A$2:A$514&ПОВТОР(" ";11);11)<=ТРАНСП(ЛЕВБ(ЕСЛИ(Лист1!B$2:B$514="";"яяя";Лист1!B$2:B$514)&ПОВТОР(" ";24);24)&ЛЕВБ(Лист1!A$2:A$514&ПОВТОР(" ";11);11)));СТРОКА($2:$514)^0);СТРОКА(A1));1)/1%%;)
и протягиваем её вниз. В B2 пишем формулу:
Код
=ИНДЕКС(Лист1!A:A;$A2)
и протягиваем её вверх, вправо, вниз.
К сообщению приложен файл: 2-3.xlsx(94.9 Kb)


Программировать проще, чем писать стихи.

Сообщение отредактировал Светлый - Пятница, 18.01.2019, 23:05
 
Ответить
СообщениеНа втором листе в A2 пишем массивную формулу:
Код
=ОКРУГЛ(ОСТАТ(НАИМЕНЬШИЙ(СТРОКА(Лист1!$2:$514)%%-СЧЁТЕСЛИ(Лист1!B$2:B$514;">="&Лист1!B$2:B$514)/1%%-СЧЁТЕСЛИ(Лист1!A$2:A$514;">="&Лист1!A$2:A$514);СТРОКА(A1));1)/1%%;)
Код
=ОКРУГЛ(ОСТАТ(НАИБОЛЬШИЙ(СТРОКА(Лист1!$2:$514)%%-МУМНОЖ(-(Лист1!B$2:B$514<=ТРАНСП(Лист1!B$2:B$514));СТРОКА($2:$514)^0)/1%%-МУМНОЖ(-(Лист1!A$2:A$514<=ТРАНСП(Лист1!A$2:A$514));СТРОКА($2:$514)^0);СТРОКА(A1));1)/1%%;)
а лучше:
Код
=ОКРУГЛ(ОСТАТ(НАИБОЛЬШИЙ(СТРОКА(Лист1!$2:$514)%%-МУМНОЖ(-(ЕСЛИ(Лист1!B$2:B$514="";"яяя";Лист1!B$2:B$514)<=ТРАНСП(Лист1!B$2:B$514));СТРОКА($2:$514)^0)/1%%-МУМНОЖ(-(Лист1!A$2:A$514<=ТРАНСП(Лист1!A$2:A$514));СТРОКА($2:$514)^0);СТРОКА(A1));1)/1%%;)
Код
=ОКРУГЛ(ОСТАТ(НАИМЕНЬШИЙ(СТРОКА($2:$514)%%+МУМНОЖ(-(ЛЕВБ(ЕСЛИ(Лист1!B$2:B$514="";"яяя";Лист1!B$2:B$514)&ПОВТОР(" ";24);24)&ЛЕВБ(Лист1!A$2:A$514&ПОВТОР(" ";11);11)<=ТРАНСП(ЛЕВБ(ЕСЛИ(Лист1!B$2:B$514="";"яяя";Лист1!B$2:B$514)&ПОВТОР(" ";24);24)&ЛЕВБ(Лист1!A$2:A$514&ПОВТОР(" ";11);11)));СТРОКА($2:$514)^0);СТРОКА(A1));1)/1%%;)
и протягиваем её вниз. В B2 пишем формулу:
Код
=ИНДЕКС(Лист1!A:A;$A2)
и протягиваем её вверх, вправо, вниз.

Автор - Светлый
Дата добавления - 18.01.2019 в 13:25
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Сортировка данных с учетом критерия одинаковых названий (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2019 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!