Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2011, 14:41   #1
Aniqa
Новичок
Джуниор
 
Регистрация: 20.07.2011
Сообщений: 2
По умолчанию Сравнение двух диапазонов и удаление совпадений

добрый день! помогите, если сможете, не очень прошаренной девушке)))
использую Excel 2003

такая проблема:
есть файл с двумя диапазонами данных на разных листах "новый" и "старый"
необходимо удалить в "новом" все данные, которые содержаться в "старом"
т.е. сравнить два диапазона и удалить совпадения
по поиску нашла предлагаемый макрос для решения этой задачи, но у меня при его запуске возникает ошибка run-time error '13' type mismatch. и вот не знаю, что делать)))
вдруг кто подскажет?

Код:
Sub DelDups_TwoLists()
Dim a, b, i As Long, j As Long
' Для ускорения работы макроса обновление экрана отключается.
Application.ScreenUpdating = False
With Sheets("НОВЫЙ")
a = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value
End With
With Sheets("СТАРЫЙ")
b = .Range(.Cells(1, 2), .Cells(Rows.Count, 2).End(xlUp)).Value
End With
For i = UBound(a) To 2 Step -1
For j = 2 To UBound(b)
If a(i, 1) = b(j, 1) Then Sheets("НОВЫЙ").Rows(i).EntireRow.Delete
Next j, i
Application.ScreenUpdating = True
End Sub

Последний раз редактировалось Aniqa; 20.07.2011 в 15:01.
Aniqa вне форума Ответить с цитированием
Старый 20.07.2011, 14:53   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

У Вас данные в 1 столбце, поэтому

b = .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp)).Value
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 20.07.2011, 14:59   #3
Aniqa
Новичок
Джуниор
 
Регистрация: 20.07.2011
Сообщений: 2
По умолчанию

о да, спасибо огромное! все получилось))
Aniqa вне форума Ответить с цитированием
Старый 20.07.2011, 15:07   #4
Thorn
 
Регистрация: 17.02.2010
Сообщений: 7
По умолчанию

Странно как могло получится, удаляются невсе ячейки колонки. Только что проверил на простом примере из двух столбцов:
1 и 1
2 и 3
3 и 2
5 и 4

В первом столбце цифра 1 и 5 остались нетронуты. Как быть...
Thorn вне форума Ответить с цитированием
Старый 20.07.2011, 15:20   #5
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Автор кода, видимо, предполагал, что в первой строке находятся заголовки. Если без заголовков, то

For i = UBound(a) To 1 Step -1
For j = 1 To UBound(b)

Останется только 5, т.к. этого числа нет на листе "СТАРЫЙ".
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 20.07.2011, 15:31   #6
Thorn
 
Регистрация: 17.02.2010
Сообщений: 7
По умолчанию

господин Казанский, сейчас всё действительно работает и как должно быть, у меня была аналогичная задачка только не с удалением а "пометкой" цветом отличных значений..
Thorn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение 2х листов, и если нет совпадений удаление. MASRUB Microsoft Office Excel 3 03.05.2011 11:11
Макрос для двух диапазонов Severny Microsoft Office Excel 0 28.02.2011 13:31
Сравнение двух строк helena91 Общие вопросы Delphi 4 23.02.2011 01:17
Сравнение двух диапазонов и удаление совпадений ПОСТРОЧНО (доработка) pringls Microsoft Office Excel 2 26.01.2011 16:54
Нахождение совпадений в двух книгах Professor Hubert Microsoft Office Excel 5 25.07.2008 12:59