powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Сравнение списков в один проход
5 сообщений из 5, страница 1 из 1
Сравнение списков в один проход
    #32925073
Cyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cyr
Гость
Существует два списка в Excel, например:
a 1 a 1
b 2 b 2
b 4 c 3
c 3 e 2
c 2
d 1
e 3
e 1
e 2
f 1

Один список расположен в перых двух столбцах, второй список - во вторых двух. Причём списки отсортированы. Требуется найти значения списка 2, которых нет в списке 1, и вывести их (в пятом столбце).
Я сделал следующую процедурку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
i2 =  1  'счётчик списка 2'
i3 =  1  'счётчик результирующего списка отличий'
For i1 =  1  To  10  'счётчик списка 1'
    v1 = Cells(i1,  1 ).Value & Cells(i1,  2 ).Value
    v2 = Cells(i2,  3 ).Value & Cells(i1,  4 ).Value
    If v1 < v2 Or v2 = "" Then '  совпадение не найдено '
        Cells(i3,  5 ).Value = v1
        i3 = i3 +  1 
    Else: i2 = i2 +  1  ' совпадение найдено '
    End If
Next
End Sub
в результате выводится список:
b4
c2
d1
e1
e2
f1

Как видно, e2 не должен выводится, а e3, наоборот выводиться должен, но не выводится. Как подправить процедурку, чтобы получить правильный результат?
...
Рейтинг: 0 / 0
Сравнение списков в один проход
    #32925074
Cyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cyr
Гость
Sorry, правильное условие: нужно найти значения из списка 1, которых нет в списке 2.
...
Рейтинг: 0 / 0
Сравнение списков в один проход
    #32925180
FishingIsGood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В один подход можно найти различие только для сортированных списков. У тебя же это условие не соблюдено (е3, е1, е2). Так что либо отсортируй списки, либо в один подход не получится.
...
Рейтинг: 0 / 0
Сравнение списков в один проход
    #32925354
Cyr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cyr
Гость
Отсортировал.
Теперь выводится
b4
c2
d1
e2
e3
f1
Но всё равно неправильно. e2 не должно выводиться.
...
Рейтинг: 0 / 0
Сравнение списков в один проход
    #32925402
FishingIsGood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У тебя опечатка тут:

Код: plaintext
v2 = Cells(i2,  3 ).Value & Cells(i1,  4 ).Value

Должно быть:

Код: plaintext
v2 = Cells(i2,  3 ).Value & Cells(i2,  4 ).Value

А вообще дебаггер надо использывать для процесса обезжучивания...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Сравнение списков в один проход
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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