Страницы: 1
RSS
Отбор уникальных данных с нескольких столбцов в listbox
 
Всем здравствуйте, прошу подсказать, как переделать отбор уникальных элементов в listbox, чтобы он отбирал не только по одному столбцу, а по двум  (D:E).
Код
    Dim dic As Object, arr(), i&
    With Лист1
        arr = .Range("D2:E" & .Cells(Rows.Count, 1).End(xlUp).Row).Value
        Set dic = CreateObject("Scripting.Dictionary")
        For i = 1 To UBound(arr)
            dic.Item(arr(i, 2)) = ""
        Next
        ListBox1.Clear
        ListBox1.List = dic.Keys
    End With
 
Код
For i = 1 To UBound(arr)
        For j = 1 To UBound(arr, 2)
            dic.Item(arr(i, j)) = ""
        Next
Next
 
RAN, к сожалению не то, можно сделать так чтобы сравнивал по двум столбцам, что если у меня есть в D - дерево, а в C - леса, а ниже в D - метал, а в C - леса, то он выведет в listbox два объекта - леса, но при выборе одного из них в listbox объект подставляется в TextBox2, а его материал из этой строки подставляется в TextBox1.
И у меня не получается сделать так, чтобы отбирались значения не только по столбцу E, а двум D:E, чтобы он сравнивал 2 значения и отбирал от них уникальные данные в строке.
Изменено: balagancha - 24.04.2021 10:39:06
 
Если правильно понял задачу: забрать в массив из трёх столбцов диапазон с данными: первые два - это сами данные с листа, а в третьем сделать сцепку первых двух. Вот по этому третьему столбцу и создать коллекцию уникальных.
 
Юрий М, да, именно так
 
Так что конкретно не получается?
 
См. вариант на коллекции. И почему бы в ЛистБокс не отображать сразу оба столбца? Было бы нагляднее.
 
Юрий М, спасибо Вам огромное.
 
Я не знаю, почему оно сработало, но вместо
Код
If Arr(im3) = Txt Then
следует написать
Код
If Arr(i, 3) = Txt Then

Я просто промазад по запятой  :D  
Страницы: 1
Наверх