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

Вход

Регистрация

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

 

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

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сортировка столбца по алфавиту с нумерацией в соседнем с-це (Макросы/Sub)
Сортировка столбца по алфавиту с нумерацией в соседнем с-це
DrMini Дата: Четверг, 27.07.2017, 14:50 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 257
Репутация: 1 ±
Замечаний: 0% ±

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


Сообщение отредактировал 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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 234
Репутация: 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(64Kb)
 
Ответить
СообщениеДержите!
[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
Группа: Проверенные
Ранг: Обитатель
Сообщений: 257
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010, 2013
СПАСИБО! Всё работает, как надо.
Скажите пожалуйста, количество столбцов для сортировки устанавливается сортировки этим условием?
[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 из 11
Поиск:

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