powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / ComboBox - выбор отсортированных, неповторяющихся данных
14 сообщений из 14, страница 1 из 1
ComboBox - выбор отсортированных, неповторяющихся данных
    #37384037
G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
W7, Excel 2003
Подскажите как можно реализовать по другому (более продуктивно)?

Ситуация следущая:
Для выбора неповторяющихся данных использую процедуру
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub UniqueItems()
    With Me.modelTS
         iMassiv = .List
         For iCount& = .ListCount -  1  To  0  Step - 1 
             If iCount& <> Application.Match(iMassiv(iCount&,  0 ), _
             iMassiv,  0 ) -  1  Then .RemoveItem iCount&
         Next
    End With
End Sub
Для сортировки этих данных (именно по столбцу G), записал с помощью мастера, макрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Sub sortirovkaG()
    ActiveWindow.SmallScroll Down:=- 12 
    Cells.Select
    Selection.Sort Key1:=Range("G1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:= 1 , MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortTextAsNumbers
    Range("G1").Select
End Sub
Для подстановки данных в combobox использую
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub UserForm_Initialize()
    HideTitleBar Me
    sortirovkaG
'    modelTS.List = Range("base!E1:E150").Address
    iMassiv = Range("base!G1:G50").Value
    modelTS.List = iMassiv
    UniqueItems
End Sub
вроде бы все работает, но меня смущает сортировка, а вдруг понадобится из этого же листа еще один (в другом комбобоксе) отсортированный список другого столбца, что делать?

Подскажите какие либо идеи.

Спасибо.
...
Рейтинг: 0 / 0
ComboBox - выбор отсортированных, неповторяющихся данных
    #37384169
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
G., Для КБ вполне подойдет пузырек:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Function BubbleSort(ByRef vArr As Variant)
    Dim q&, j&, vTemp$: j =  0 
    On Error GoTo L1
    For q =  1  To UBound(vArr)
        If vArr(j) > vArr(q) Then
            vTemp = vArr(j)
            vArr(j) = vArr(q)
            vArr(q) = vTemp
            q = q -  2 : j = j -  2 
        End If
        j = j +  1 
    Next
L1:     If Err >  0  Then j =  0 : q =  1 : Resume
    BubbleSort = vArr
End Function
Передаете в нее массив - на выходе получаете отсортированный.
...
Рейтинг: 0 / 0
ComboBox - выбор отсортированных, неповторяющихся данных
    #37384174
G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklp, спасибо, что отозвались, можно поподробней, я только начинаю изучать.
...
Рейтинг: 0 / 0
ComboBox - выбор отсортированных, неповторяющихся данных
    #37384306
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
G.,
Да объяснять-то в общем нечего. Например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub UserForm_Initialize()
    HideTitleBar Me
    sortirovkaG
'    modelTS.List = Range("base!E1:E150").Address
    iMassiv = Range("base!G1:G50").Value
    iMassiv =BubbleSort(iMassiv)' или сразу iMassiv = BubbleSort(Range("base!G1:G50").Value)
    modelTS.List = iMassiv
    UniqueItems
End Sub
П.С. я бы сначала выбрал уникальные, отсортировал, а только потом совал бы их в .list. Быстрей и технологичней.
...
Рейтинг: 0 / 0
ComboBox - выбор отсортированных, неповторяющихся данных
    #37384760
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: G.
> Добрый день!
> W7, Excel 2003
> Подскажите как можно реализовать по другому (более продуктивно)?
> Для выбора неповторяющихся данных использую процедуру
> Подскажите какие либо идеи.

Можно попробовать дать задание Екселю выбрать уникальные:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Private Sub UniqueList()
Dim r As Range
Dim s As Worksheet, sh As Worksheet, w1 As Workbook

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Set sh = Application.ActiveSheet
If sh.AutoFilter Is Nothing Then
    MsgBox "Установите автофильтр"
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Exit Sub
End If

Set w1 = Application.Workbooks.Add

Set s = w1.Worksheets.Add

' Получаем список уникальных комбинаций
Set r = s.Range("a1")
sh.Range("A:C").AdvancedFilter xlFilterCopy, , r, True
' В новой книге будет список уникальных комбинаций данных из столбцов А, В и С

Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ComboBox - выбор отсортированных, неповторяющихся данных
    #37389525
G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем.
...
Рейтинг: 0 / 0
ComboBox - выбор отсортированных, неповторяющихся данных
    #37391208
Фотография -O_o-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый всем! У меня подобная ситуация НО:
Делаю сейчас БД в ЕКСЕЛЬ для автоматизации своей работы. Сейчас есть у меня вопрос. Как в Комбобокс загнать массив данных который все время будет изменяться увеличиваться и уменьшаться. Что бы в Комбобокс отображались только значения без пустых ячеек. Я указал в Комбобокс rowsource =aaa
Спасибо.
...
Рейтинг: 0 / 0
ComboBox - выбор отсортированных, неповторяющихся данных
    #37391270
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-O_o-, так.
...
Рейтинг: 0 / 0
ComboBox - выбор отсортированных, неповторяющихся данных
    #37391293
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Убрал лишнее.
...
Рейтинг: 0 / 0
ComboBox - выбор отсортированных, неповторяющихся данных
    #37391337
Фотография -O_o-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklp,
Спасибо!!! когда вижу столько переменных, да еще и действия над и с ними, то голова идет кругом не программер я!!!! ну да ладно.
А подскажите еще такое... по тому же примеру. Ели я хочу записать значение которое выбрано в combobox в какую-то ячейку, то он записывает только первый столбец с лева. В моем случае это ID. А как сделать так что бы записывал name?
...
Рейтинг: 0 / 0
ComboBox - выбор отсортированных, неповторяющихся данных
    #37391352
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-O_o-,

Код: plaintext
1.
2.
Private Sub ComboBox1_Change()
    [c1].Value = ComboBox1.Value
End Sub
...
Рейтинг: 0 / 0
ComboBox - выбор отсортированных, неповторяющихся данных
    #37391365
Фотография -O_o-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklp,
спасибо. оно и так стало добавлять после создания списка. спс
...
Рейтинг: 0 / 0
ComboBox - выбор отсортированных, неповторяющихся данных
    #37391377
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-O_o-,
в Вашем Варианте для отображения значений надо было:
Код: plaintext
1.
2.
Private Sub ComboBox1_Change()
    [c1].Value = ComboBox1.List(ComboBox1.ListIndex,  1 )
End Sub
...
Рейтинг: 0 / 0
ComboBox - выбор отсортированных, неповторяющихся данных
    #37391380
Фотография -O_o-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklp,
у меня чуть-чуть другая форма... все пока что работает нормалек.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / ComboBox - выбор отсортированных, неповторяющихся данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]