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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.07.2009, 05:02   #11
hybrid84
 
Регистрация: 20.07.2009
Сообщений: 6
По умолчанию

Да, именно так.
Может быть несколько совпадений по одному столбцу,
но удалять надо только те строки которые сопадают по двум.
hybrid84 вне форума Ответить с цитированием
Старый 24.07.2009, 05:13   #12
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если сравнивать по 2-м столбцам, то так:
Код:
Sub Main()
    Dim i As Long, j As Long, k As Long, x As New Collection, a, b, c, d
    a = Sheets(1).UsedRange.Value: b = Sheets(2).UsedRange.Value
    ReDim c(1 To UBound(a, 1), 1 To UBound(a, 2)): ReDim d(1 To UBound(b, 1), 1 To UBound(b, 2))
    Application.ScreenUpdating = False: On Error Resume Next
    For i = 1 To UBound(a, 1)
        x.Add a(i, 1) & a(i, 2), CStr(a(i, 1) & a(i, 2))
    Next
    On Error GoTo 0: k = 1
    For i = 1 To UBound(b, 1)
        On Error Resume Next
        x.Add b(i, 1) & b(i, 2), CStr(b(i, 1) & b(i, 2))
        If Err = 0 Then
            For j = 1 To UBound(d, 2)
                d(k, j) = b(i, j)
            Next
            k = k + 1
        Else: On Error GoTo 0
        End If
    Next
    Sheets(2).UsedRange.Value = d: Set x = Nothing
    For i = 1 To UBound(b, 1)
        x.Add b(i, 1) & b(i, 2), CStr(b(i, 1) & b(i, 2))
    Next
    On Error GoTo 0: k = 1
    For i = 1 To UBound(a, 1)
        On Error Resume Next
        x.Add a(i, 1) & a(i, 2), CStr(a(i, 1) & a(i, 2))
        If Err = 0 Then
            For j = 1 To UBound(c, 2)
                c(k, j) = a(i, j)
            Next
            k = k + 1
        Else: On Error GoTo 0
        End If
    Next
    Sheets(1).UsedRange.Value = c
End Sub
Условие: в обоих листах должно быть использовано не менее 2-х столбцов.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
МАКРОС НА ПОИСК, СУММИРОВАНИЕ И УДАЛЕНИЕ ПОВТОРЯЮЩИХСЯ СТРОК provodnikam Microsoft Office Excel 14 19.02.2015 07:53
удаление строк alexk Microsoft Office Excel 24 15.02.2011 08:34
Одновременное удаление записей в разных таблицах Lkhasa БД в Delphi 9 16.12.2010 13:21
Удаление строк Dr.Badnezz Общие вопросы Delphi 1 07.10.2008 15:22
удаление строк Dime_x Microsoft Office Excel 2 07.10.2008 13:38