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

Вход

Регистрация

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

 

= Мир MS Excel/Сортировка на основании выбранного столбца - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Сортировка на основании выбранного столбца
Сергей13 Дата: Суббота, 20.04.2019, 19:37 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте.
Ребята помогите реализовать сортировку нужного столбца, независимо от количества строк на основании введенного числового значения в TextBox1 которое обозначает номер сортируемого столбца.
В коде примерно это видится так.
[vba]
Код
    With GroupSheet.Sort               'Обращение  к листу group
        .SetRange Range(m)             'Сортируемая колонка на основании переменной с числовым значением в TextBox1
        .Header = xlNo                 'Заголовок
        .MatchCase = False             'Учитывать регистр
        .Orientation = xlTopToBottom   'Ориентация
        .SortMethod = xlPinYin         'Способ cортировки
        .Apply                         'Применить
    End With
[/vba]
К сообщению приложен файл: sortirovka.xlsm (22.6 Kb)
 
Ответить
СообщениеЗдравствуйте.
Ребята помогите реализовать сортировку нужного столбца, независимо от количества строк на основании введенного числового значения в TextBox1 которое обозначает номер сортируемого столбца.
В коде примерно это видится так.
[vba]
Код
    With GroupSheet.Sort               'Обращение  к листу group
        .SetRange Range(m)             'Сортируемая колонка на основании переменной с числовым значением в TextBox1
        .Header = xlNo                 'Заголовок
        .MatchCase = False             'Учитывать регистр
        .Orientation = xlTopToBottom   'Ориентация
        .SortMethod = xlPinYin         'Способ cортировки
        .Apply                         'Применить
    End With
[/vba]

Автор - Сергей13
Дата добавления - 20.04.2019 в 19:37
InExSu Дата: Воскресенье, 21.04.2019, 00:35 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Привет!

В UserForm1
[vba]
Код
Private Sub CommandButton1_Click()
    
    Столбец_Сортировать ActiveSheet, Me.TextBox1

End Sub
[/vba]
в Module1
[vba]
Код
Sub FormOtkriti()

    UserForm1.TextBox1 = ActiveCell.Column

    UserForm1.Show

End Sub

Public Function Столбец_Сортировать(ws As Worksheet, ByVal iCol As Long)
    ' Тестом НЕ покрыто

    With ws

        Сортировать .UsedRange, iCol, _
                xlAscending, xlYes

    End With
End Function

Public Function Сортировать(r As Range, ByVal iCol As Long, ByVal ord As Variant, _
        ByVal iHead As Variant)    '   Тестом НЕ покрыта

    With r

        .Sort key1:=.Cells(1, iCol), order1:=ord, Header:=iHead

    End With
End Function
[/vba]


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
СообщениеПривет!

В UserForm1
[vba]
Код
Private Sub CommandButton1_Click()
    
    Столбец_Сортировать ActiveSheet, Me.TextBox1

End Sub
[/vba]
в Module1
[vba]
Код
Sub FormOtkriti()

    UserForm1.TextBox1 = ActiveCell.Column

    UserForm1.Show

End Sub

Public Function Столбец_Сортировать(ws As Worksheet, ByVal iCol As Long)
    ' Тестом НЕ покрыто

    With ws

        Сортировать .UsedRange, iCol, _
                xlAscending, xlYes

    End With
End Function

Public Function Сортировать(r As Range, ByVal iCol As Long, ByVal ord As Variant, _
        ByVal iHead As Variant)    '   Тестом НЕ покрыта

    With r

        .Sort key1:=.Cells(1, iCol), order1:=ord, Header:=iHead

    End With
End Function
[/vba]

Автор - InExSu
Дата добавления - 21.04.2019 в 00:35
Сергей13 Дата: Воскресенье, 21.04.2019, 02:48 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
InExSu, Походу я не полностью раскрыл тему по данному предложению «реализовать сортировку нужного столбца». Под нужным столбцом подразумевалась сортировка именно его, то есть нужного столбца, на соседние столбцы сортировка не должна распространяться.


Сообщение отредактировал Сергей13 - Воскресенье, 21.04.2019, 02:55
 
Ответить
СообщениеInExSu, Походу я не полностью раскрыл тему по данному предложению «реализовать сортировку нужного столбца». Под нужным столбцом подразумевалась сортировка именно его, то есть нужного столбца, на соседние столбцы сортировка не должна распространяться.

Автор - Сергей13
Дата добавления - 21.04.2019 в 02:48
RAN Дата: Воскресенье, 21.04.2019, 08:10 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Цитата Сергей13, 21.04.2019 в 02:48, в сообщении № 3 ()
подразумевалась сортировка именно его, то есть нужного столбца

Что макрос InExSu и делает.
А вам хочу порекомендовать, прежде, чем выкидывать что-либо из кода макрорекордера, разберитесь, можно ли это выкидывать.


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
Цитата Сергей13, 21.04.2019 в 02:48, в сообщении № 3 ()
подразумевалась сортировка именно его, то есть нужного столбца

Что макрос InExSu и делает.
А вам хочу порекомендовать, прежде, чем выкидывать что-либо из кода макрорекордера, разберитесь, можно ли это выкидывать.

Автор - RAN
Дата добавления - 21.04.2019 в 08:10
InExSu Дата: Воскресенье, 21.04.2019, 09:46 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Цитата Сергей13, 21.04.2019 в 02:48, в сообщении № 3 ()
на соседние столбцы сортировка не должна распространяться

Тогда замените
[vba]
Код
Public Function Столбец_Сортировать(ws As Worksheet, ByVal iCol As Long)
    ' Тестом НЕ покрыто

    With ws

        Сортировать .UsedRange, iCol, _
                xlAscending, xlYes

    End With
End Function
[/vba]

на

[vba]
Код
Public Function Столбец_Сортировать(ws As Worksheet, ByVal iCol As Long)
' Тестом НЕ покрыто

    With ws

        Сортировать Столбец(ws, iCol), 1, _
                xlAscending, xlYes

    End With
End Function

Public Function Столбец(ws As Worksheet, ByVal iCol As Long) _
        As Range
' Тестом НЕ покрыто

    With ws

        Set Столбец = Application.Intersect( _
                .UsedRange, .Columns(iCol))

    End With
End Function
[/vba]


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
Сообщение
Цитата Сергей13, 21.04.2019 в 02:48, в сообщении № 3 ()
на соседние столбцы сортировка не должна распространяться

Тогда замените
[vba]
Код
Public Function Столбец_Сортировать(ws As Worksheet, ByVal iCol As Long)
    ' Тестом НЕ покрыто

    With ws

        Сортировать .UsedRange, iCol, _
                xlAscending, xlYes

    End With
End Function
[/vba]

на

[vba]
Код
Public Function Столбец_Сортировать(ws As Worksheet, ByVal iCol As Long)
' Тестом НЕ покрыто

    With ws

        Сортировать Столбец(ws, iCol), 1, _
                xlAscending, xlYes

    End With
End Function

Public Function Столбец(ws As Worksheet, ByVal iCol As Long) _
        As Range
' Тестом НЕ покрыто

    With ws

        Set Столбец = Application.Intersect( _
                .UsedRange, .Columns(iCol))

    End With
End Function
[/vba]

Автор - InExSu
Дата добавления - 21.04.2019 в 09:46
Сергей13 Дата: Воскресенье, 21.04.2019, 12:50 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
InExSu, Здравствуйте.
Мной упущен еще такой нюанс … Данная фильтрация должна запускаться с другого листа, в тестовом примере пытался обозначить данную необходимость глобальными переменными...
В данном-же случае в предлагаемом коде пробовал прилепить к переменной r лист
[vba]
Код
With Sheets("group").r
[/vba]
Не проходит, выдает ошибку.
 
Ответить
СообщениеInExSu, Здравствуйте.
Мной упущен еще такой нюанс … Данная фильтрация должна запускаться с другого листа, в тестовом примере пытался обозначить данную необходимость глобальными переменными...
В данном-же случае в предлагаемом коде пробовал прилепить к переменной r лист
[vba]
Код
With Sheets("group").r
[/vba]
Не проходит, выдает ошибку.

Автор - Сергей13
Дата добавления - 21.04.2019 в 12:50
InExSu Дата: Воскресенье, 21.04.2019, 13:38 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Цитата Сергей13, 21.04.2019 в 12:50, в сообщении № 7 ()
фильтрация


Сначала было про сортировку.

Пример вызова Столбец_Сортировать:

[vba]
Код
Public Function REName_()

    Dim Лист As Worksheet
    Dim Столбец As Long

    Set Лист = Sheets("group")
    Столбец = 1

    Столбец_Сортировать Лист, Столбец

End Function
[/vba]


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
Сообщение
Цитата Сергей13, 21.04.2019 в 12:50, в сообщении № 7 ()
фильтрация


Сначала было про сортировку.

Пример вызова Столбец_Сортировать:

[vba]
Код
Public Function REName_()

    Dim Лист As Worksheet
    Dim Столбец As Long

    Set Лист = Sheets("group")
    Столбец = 1

    Столбец_Сортировать Лист, Столбец

End Function
[/vba]

Автор - InExSu
Дата добавления - 21.04.2019 в 13:38
Сергей13 Дата: Воскресенье, 21.04.2019, 13:41 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
InExSu,
Цитата
фильтрация
Извиняюсь заплутал...
Протестирую.
 
Ответить
СообщениеInExSu,
Цитата
фильтрация
Извиняюсь заплутал...
Протестирую.

Автор - Сергей13
Дата добавления - 21.04.2019 в 13:41
InExSu Дата: Воскресенье, 21.04.2019, 13:48 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Цитата Сергей13, 21.04.2019 в 12:50, в сообщении № 7 ()
пробовал прилепить к переменной r лист


в VBA к объекту не прилепляют, а просят предоставить (из того, что в объекте есть).

Например,
[vba]
Код
Public Function REName_()
    Dim ws As Worksheet
    'прошу предоставить объект лист
    Set ws = Sheets("group")

    Dim ячейка As Range
    'прошу предоставить объект ячейку
    Set ячейка = ws.Cells(1, 2)

    ' использую свойства объекта по имени
    ячейка.Interior.Color = vbRed
    
End Function
[/vba]


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
Сообщение
Цитата Сергей13, 21.04.2019 в 12:50, в сообщении № 7 ()
пробовал прилепить к переменной r лист


в VBA к объекту не прилепляют, а просят предоставить (из того, что в объекте есть).

Например,
[vba]
Код
Public Function REName_()
    Dim ws As Worksheet
    'прошу предоставить объект лист
    Set ws = Sheets("group")

    Dim ячейка As Range
    'прошу предоставить объект ячейку
    Set ячейка = ws.Cells(1, 2)

    ' использую свойства объекта по имени
    ячейка.Interior.Color = vbRed
    
End Function
[/vba]

Автор - InExSu
Дата добавления - 21.04.2019 в 13:48
Сергей13 Дата: Воскресенье, 21.04.2019, 14:37 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
InExSu, Лепить это образно, леплю на данный момент я... )
Не знаю что делаю не правильно, а по сути я ничего не делаю, а просто тупо вставляю предлагаемое, но при тестировании выдает ошибку на строку
[vba]
Код
.Sort key1:=.Cells(1, iCol), order1:=ord, Header:=iHead
[/vba]
К сообщению приложен файл: 8252746.xlsm (24.6 Kb)
 
Ответить
СообщениеInExSu, Лепить это образно, леплю на данный момент я... )
Не знаю что делаю не правильно, а по сути я ничего не делаю, а просто тупо вставляю предлагаемое, но при тестировании выдает ошибку на строку
[vba]
Код
.Sort key1:=.Cells(1, iCol), order1:=ord, Header:=iHead
[/vba]

Автор - Сергей13
Дата добавления - 21.04.2019 в 14:37
InExSu Дата: Воскресенье, 21.04.2019, 14:47 | Сообщение № 11
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
Цитата Сергей13, 21.04.2019 в 14:37, в сообщении № 11 ()
ошибку на строку

В UserForm1
замените строку
[vba]
Код
Столбец_Сортировать ActiveSheet, Me.TextBox1
[/vba]
на
[vba]
Код
Столбец_Сортировать Worksheets("group"), Me.TextBox1
[/vba]


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
Сообщение
Цитата Сергей13, 21.04.2019 в 14:37, в сообщении № 11 ()
ошибку на строку

В UserForm1
замените строку
[vba]
Код
Столбец_Сортировать ActiveSheet, Me.TextBox1
[/vba]
на
[vba]
Код
Столбец_Сортировать Worksheets("group"), Me.TextBox1
[/vba]

Автор - InExSu
Дата добавления - 21.04.2019 в 14:47
Сергей13 Дата: Воскресенье, 21.04.2019, 15:39 | Сообщение № 12
Группа: Проверенные
Ранг: Обитатель
Сообщений: 344
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
InExSu, В тестовом варианте работает, а в рабочем как-то не идет. В событии клика кнопки установлены иные коды и условия и после вставки строки
Столбец_Сортировать Worksheets("group"), Me.TextBox1 (в таком варианте) начались сбои и ошибки по иным кодам.
Думаю что оставлю пока как было изначально, а там возможно найду иной путь решение проблемы…
Спасибо что уделили внимание.

RAN, Спасибо, учту.


Сообщение отредактировал Сергей13 - Воскресенье, 21.04.2019, 22:39
 
Ответить
СообщениеInExSu, В тестовом варианте работает, а в рабочем как-то не идет. В событии клика кнопки установлены иные коды и условия и после вставки строки
Столбец_Сортировать Worksheets("group"), Me.TextBox1 (в таком варианте) начались сбои и ошибки по иным кодам.
Думаю что оставлю пока как было изначально, а там возможно найду иной путь решение проблемы…
Спасибо что уделили внимание.

RAN, Спасибо, учту.

Автор - Сергей13
Дата добавления - 21.04.2019 в 15:39
  • Страница 1 из 1
  • 1
Поиск:

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