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

Вход

Регистрация

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

 

= Мир MS Excel/Сравнить два списка(Массивы) и вывести нужные в ListBox1 - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сравнить два списка(Массивы) и вывести нужные в ListBox1 (Макросы/Sub)
Сравнить два списка(Массивы) и вывести нужные в ListBox1
lopuxi Дата: Понедельник, 01.06.2015, 16:18 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
Запаролся... :( :'(

Помогите составить такое условие, имея два массива, которые нужно друг с другом сравнить. И если в одном массиве, нету некоторых значений, то выдать в listbox1 каких именно значений он не нашел.

Иным словом, в первом списке мы имеем Первый, Россия 1, НТВ. И сравниваем его со вторым списком, где есть Первый, Россия 1. То listBox1 нам должен отразить только НТВ. А ListBox2 тем временем выдаст Первый, Россия 1

Я прикрепляю файл.

Весь код, выглядит так:


[p.s.]спасибо.[/p.s.]
К сообщению приложен файл: 5587794.xlsm (28.9 Kb)


О_о ...и так можно было?

Сообщение отредактировал lopuxi - Понедельник, 01.06.2015, 16:37
 
Ответить
СообщениеЗапаролся... :( :'(

Помогите составить такое условие, имея два массива, которые нужно друг с другом сравнить. И если в одном массиве, нету некоторых значений, то выдать в listbox1 каких именно значений он не нашел.

Иным словом, в первом списке мы имеем Первый, Россия 1, НТВ. И сравниваем его со вторым списком, где есть Первый, Россия 1. То listBox1 нам должен отразить только НТВ. А ListBox2 тем временем выдаст Первый, Россия 1

Я прикрепляю файл.

Весь код, выглядит так:


[p.s.]спасибо.[/p.s.]

Автор - lopuxi
Дата добавления - 01.06.2015 в 16:18
KSV Дата: Понедельник, 01.06.2015, 17:07 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
можно, например, так:
[vba]
Код
Private Sub UserForm_Initialize()
       Dim i&, n&, s$, k(), p(), dic As Object
       k = Worksheets("Каналы").Range("A4:A23").Value
       p = Worksheets("План").Range("D12:D16").Value
       Set dic = CreateObject("Scripting.Dictionary")
       For i = 1 To UBound(p)
           dic(UCase$(Trim$(p(i, 1)))) = i
       Next
       For i = 1 To UBound(k)
           k(i, 1) = Trim$(k(i, 1))
           s = k(i, 1)
           n = InStr(s, "(")
           If n Then s = Left$(s, n - 1)
           If dic.exists(UCase$(RTrim$(s))) Then
               ListBox2.AddItem k(i, 1)
           Else
               ListBox1.AddItem k(i, 1)
           End If
       Next
End Sub
[/vba]
К сообщению приложен файл: 5327926.xlsm (32.6 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Понедельник, 01.06.2015, 17:10
 
Ответить
Сообщениеможно, например, так:
[vba]
Код
Private Sub UserForm_Initialize()
       Dim i&, n&, s$, k(), p(), dic As Object
       k = Worksheets("Каналы").Range("A4:A23").Value
       p = Worksheets("План").Range("D12:D16").Value
       Set dic = CreateObject("Scripting.Dictionary")
       For i = 1 To UBound(p)
           dic(UCase$(Trim$(p(i, 1)))) = i
       Next
       For i = 1 To UBound(k)
           k(i, 1) = Trim$(k(i, 1))
           s = k(i, 1)
           n = InStr(s, "(")
           If n Then s = Left$(s, n - 1)
           If dic.exists(UCase$(RTrim$(s))) Then
               ListBox2.AddItem k(i, 1)
           Else
               ListBox1.AddItem k(i, 1)
           End If
       Next
End Sub
[/vba]

Автор - KSV
Дата добавления - 01.06.2015 в 17:07
lopuxi Дата: Вторник, 02.06.2015, 13:30 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
Да, спасибо. Это тоже работает, хотя мне не нужно было использовать список на другом листе, но это мелочи.
Я немного по другому сделал, но данный способ мне нравится тем что он преобразует все в текст, убирает пробелы, в общем сливает все воедино и после этого сравнивает. Таким образом можно избежать некоторых пользовательских ошибок.

Но у меня теперь другой вопрос.
ListBox1 заполняется из массива и массив имеет элементы от 1 до 20.
Я могу использовать эти номера (1-20), при добавлении их в listbox2 по двойному клику, так что бы номер элемента из массива - к примеру №3, занимал в listbox2 - 3-ю позицию?
Мне это чисто интересно, просто я мало работал с listbox.
[moder]Это уже к данной теме не относится. Создайте новую тему.[/moder]


О_о ...и так можно было?

Сообщение отредактировал Manyasha - Вторник, 02.06.2015, 13:45
 
Ответить
СообщениеДа, спасибо. Это тоже работает, хотя мне не нужно было использовать список на другом листе, но это мелочи.
Я немного по другому сделал, но данный способ мне нравится тем что он преобразует все в текст, убирает пробелы, в общем сливает все воедино и после этого сравнивает. Таким образом можно избежать некоторых пользовательских ошибок.

Но у меня теперь другой вопрос.
ListBox1 заполняется из массива и массив имеет элементы от 1 до 20.
Я могу использовать эти номера (1-20), при добавлении их в listbox2 по двойному клику, так что бы номер элемента из массива - к примеру №3, занимал в listbox2 - 3-ю позицию?
Мне это чисто интересно, просто я мало работал с listbox.
[moder]Это уже к данной теме не относится. Создайте новую тему.[/moder]

Автор - lopuxi
Дата добавления - 02.06.2015 в 13:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сравнить два списка(Массивы) и вывести нужные в ListBox1 (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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