Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / ComboBox - выбор отсортированных, неповторяющихся данных / 14 сообщений из 14, страница 1 из 1
07.08.2011, 14:02
    #37384037
G.
G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox - выбор отсортированных, неповторяющихся данных
Добрый день!
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
07.08.2011, 16:50
    #37384169
kuklp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox - выбор отсортированных, неповторяющихся данных
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
07.08.2011, 16:55
    #37384174
G.
G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox - выбор отсортированных, неповторяющихся данных
kuklp, спасибо, что отозвались, можно поподробней, я только начинаю изучать.
...
Рейтинг: 0 / 0
07.08.2011, 20:27
    #37384306
kuklp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox - выбор отсортированных, неповторяющихся данных
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
08.08.2011, 10:46
    #37384760
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox - выбор отсортированных, неповторяющихся данных
> Автор: 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
10.08.2011, 16:07
    #37389525
G.
G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox - выбор отсортированных, неповторяющихся данных
Спасибо всем.
...
Рейтинг: 0 / 0
11.08.2011, 15:34
    #37391208
-O_o-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox - выбор отсортированных, неповторяющихся данных
День добрый всем! У меня подобная ситуация НО:
Делаю сейчас БД в ЕКСЕЛЬ для автоматизации своей работы. Сейчас есть у меня вопрос. Как в Комбобокс загнать массив данных который все время будет изменяться увеличиваться и уменьшаться. Что бы в Комбобокс отображались только значения без пустых ячеек. Я указал в Комбобокс rowsource =aaa
Спасибо.
...
Рейтинг: 0 / 0
11.08.2011, 16:01
    #37391270
kuklp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox - выбор отсортированных, неповторяющихся данных
-O_o-, так.
...
Рейтинг: 0 / 0
11.08.2011, 16:08
    #37391293
kuklp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox - выбор отсортированных, неповторяющихся данных
Убрал лишнее.
...
Рейтинг: 0 / 0
11.08.2011, 16:27
    #37391337
-O_o-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox - выбор отсортированных, неповторяющихся данных
kuklp,
Спасибо!!! когда вижу столько переменных, да еще и действия над и с ними, то голова идет кругом не программер я!!!! ну да ладно.
А подскажите еще такое... по тому же примеру. Ели я хочу записать значение которое выбрано в combobox в какую-то ячейку, то он записывает только первый столбец с лева. В моем случае это ID. А как сделать так что бы записывал name?
...
Рейтинг: 0 / 0
11.08.2011, 16:33
    #37391352
kuklp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox - выбор отсортированных, неповторяющихся данных
-O_o-,

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


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