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

Вход

Регистрация

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

 

= Мир MS Excel/Сортировка столбца по алфавиту с нумерацией в соседнем с-це - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сортировка столбца по алфавиту с нумерацией в соседнем с-це (Макросы/Sub)
Сортировка столбца по алфавиту с нумерацией в соседнем с-це
DrMini Дата: Четверг, 27.07.2017, 14:50 | Сообщение № 1
Группа: Проверенные
Ранг: Старожил
Сообщений: 1641
Репутация: 207 ±
Замечаний: 0% ±

Excel LTSC 2024 RUS
Доброго времени суток.
Я при помощи решения выложенного на этом сайте, сделал сортировку макросом вот в этой теме. Недавно пришёл новый бухгалтер и попросила изменить сортировку.
Теперь при заполнении таблицы и запуске макроса сортироваться должен по алфавиту столбец B2:B201 ,а ячейки в столбце A2:A201 должны автоматически заполняться цифрами от 1 до 200 по порядку.
Сортировка должна происходить только тех фамилий перед которыми в столбце A2:A201 был до сортировки любой знак или цифра. Если до сортировки перед фамилией была пустая ячейка то эта фамилия должна быть помещена в диапазон B202:B (это будет означать, что человек уволился и его данные пока не нужны). Но в дальнейшем если в пустую ячейку перед фамилией поставить любой знак то эта фамилия поднималась бы в интервал B2:B201 и сортировалась по алфавиту и перенумеровывалась согласно порядковому номеру от 1 до 200
P.S. в организации более 155 человек ещё ни разу не работало. Число 200 "взято с потолка". В принципе если можно убрать незаполненные строки думаю будет ещё лучше.
Очень надеюсь на Вашу помощь.
К сообщению приложен файл: 170702-2-2.xlsm (58.6 Kb)


Сообщение отредактировал DrMini - Четверг, 27.07.2017, 14:53
 
Ответить
СообщениеДоброго времени суток.
Я при помощи решения выложенного на этом сайте, сделал сортировку макросом вот в этой теме. Недавно пришёл новый бухгалтер и попросила изменить сортировку.
Теперь при заполнении таблицы и запуске макроса сортироваться должен по алфавиту столбец B2:B201 ,а ячейки в столбце A2:A201 должны автоматически заполняться цифрами от 1 до 200 по порядку.
Сортировка должна происходить только тех фамилий перед которыми в столбце A2:A201 был до сортировки любой знак или цифра. Если до сортировки перед фамилией была пустая ячейка то эта фамилия должна быть помещена в диапазон B202:B (это будет означать, что человек уволился и его данные пока не нужны). Но в дальнейшем если в пустую ячейку перед фамилией поставить любой знак то эта фамилия поднималась бы в интервал B2:B201 и сортировалась по алфавиту и перенумеровывалась согласно порядковому номеру от 1 до 200
P.S. в организации более 155 человек ещё ни разу не работало. Число 200 "взято с потолка". В принципе если можно убрать незаполненные строки думаю будет ещё лучше.
Очень надеюсь на Вашу помощь.

Автор - DrMini
Дата добавления - 27.07.2017 в 14:50
Perfect2You Дата: Четверг, 27.07.2017, 16:26 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 237
Репутация: 59 ±
Замечаний: 0% ±

Excel 2010
Держите!
[vba]
Код
Sub Кнопка1_Щелкнуть()
Dim iA As Long, iB As Long
'
' Кнопка1_Щелкнуть Макрос
'
    iA = Cells(Rows.Count, 1).End(xlUp).Row
    If iA < 2 Then Exit Sub
    Range("A2:L" & iA).Sort Key1:=Range("A2"), Order1:=xlDescending _
        , Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
        xlSortNormal
    iA = Cells(Rows.Count, 1).End(xlUp).Row
    Range("A2:L" & iA).Sort Key1:=Range("B2"), Order1:=xlAscending _
        , Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
        xlSortNormal
    Range("A2:A" & iA).Value = Evaluate("=ROW(A2:A" & iA & ")-1")
    iB = Cells(Rows.Count, 2).End(xlUp).Row
    If iB > (iA + 1) Then
        Range("A" & (iA + 1) & ":L" & iB).Sort Key1:=Range("B2"), Order1:=xlAscending _
            , Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
            Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
            xlSortNormal
    End If

End Sub
[/vba]
На всякий случай сделал сортировку и тех, кто не помечен. Если не нужна для экономии времени можете убрать в макросе все после строки:
[vba]
Код
Range("A2:A" & iA).Value = Evaluate("=ROW(A2:A" & iA & ")-1")
[/vba]
К сообщению приложен файл: _170702-2-2.xlsm (64.3 Kb)
 
Ответить
СообщениеДержите!
[vba]
Код
Sub Кнопка1_Щелкнуть()
Dim iA As Long, iB As Long
'
' Кнопка1_Щелкнуть Макрос
'
    iA = Cells(Rows.Count, 1).End(xlUp).Row
    If iA < 2 Then Exit Sub
    Range("A2:L" & iA).Sort Key1:=Range("A2"), Order1:=xlDescending _
        , Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
        xlSortNormal
    iA = Cells(Rows.Count, 1).End(xlUp).Row
    Range("A2:L" & iA).Sort Key1:=Range("B2"), Order1:=xlAscending _
        , Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
        xlSortNormal
    Range("A2:A" & iA).Value = Evaluate("=ROW(A2:A" & iA & ")-1")
    iB = Cells(Rows.Count, 2).End(xlUp).Row
    If iB > (iA + 1) Then
        Range("A" & (iA + 1) & ":L" & iB).Sort Key1:=Range("B2"), Order1:=xlAscending _
            , Header:=xlNo, OrderCustom:=1, MatchCase:=False, _
            Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
            xlSortNormal
    End If

End Sub
[/vba]
На всякий случай сделал сортировку и тех, кто не помечен. Если не нужна для экономии времени можете убрать в макросе все после строки:
[vba]
Код
Range("A2:A" & iA).Value = Evaluate("=ROW(A2:A" & iA & ")-1")
[/vba]

Автор - Perfect2You
Дата добавления - 27.07.2017 в 16:26
DrMini Дата: Четверг, 27.07.2017, 16:42 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 1641
Репутация: 207 ±
Замечаний: 0% ±

Excel LTSC 2024 RUS
СПАСИБО! Всё работает, как надо.
Скажите пожалуйста, количество столбцов для сортировки устанавливается сортировки этим условием?
[vba]
Код
"A2:L"
[/vba]


Сообщение отредактировал DrMini - Четверг, 27.07.2017, 17:27
 
Ответить
СообщениеСПАСИБО! Всё работает, как надо.
Скажите пожалуйста, количество столбцов для сортировки устанавливается сортировки этим условием?
[vba]
Код
"A2:L"
[/vba]

Автор - DrMini
Дата добавления - 27.07.2017 в 16:42
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сортировка столбца по алфавиту с нумерацией в соседнем с-це (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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