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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2012, 01:14   #11
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Специально для ленивых - никаких кнопок!
Просто активируете лист.
Как бонус - вместо проматывания возможных тысяч строк и мучания глаз - фильтр по "Y"

P.S. - обнаружилось, что если при переходе на лист на нём стоит фильтр - код косячит...
Ну это можно поправить - сперва кодом скинуть фильтр.
Например так:

Код:
Sub compare()
    Dim a(), i&, flag As Boolean, t
    Application.ScreenUpdating = False
    On Error Resume Next
    With Sheets("Лист1")
        If .AutoFilterMode Then .ShowAllData
    End With
    On Error GoTo 0
    With Sheets("Лист2")
        a = Range(.[C2], .Range("B" & .Rows.Count).End(xlUp)).Value
    End With
    With CreateObject("scripting.dictionary")
        For i = 1 To UBound(a): .Item(a(i, 1) & "|" & a(i, 2)) = 0&: Next
        With Sheets("Лист1")
            a = Range(.[C2], .Range("B" & .Rows.Count).End(xlUp)).Value
        End With
        ReDim b(1 To UBound(a), 1 To 1)
        For i = 1 To UBound(a)
            If .exists((a(i, 1) & "|" & a(i, 2))) Then b(i, 1) = "Y"
        Next
    End With
    Sheets("Лист1").[E2].Resize(UBound(b)) = b
    Application.ScreenUpdating = True

End Sub
Вложения
Тип файла: rar Совпадения.rar (12.5 Кб, 18 просмотров)
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 23.12.2012 в 01:38.
Hugo121 вне форума Ответить с цитированием
Старый 23.12.2012, 01:28   #12
riniks17
Форумчанин
 
Регистрация: 15.12.2011
Сообщений: 355
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Специально для ленивых - никаких кнопок!
Просто активируете лист.
Как бонус - вместо проматывания возможных тысяч строк и мучания глаз - фильтр по "Y"

P.S. - обнаружилось, что если при переходе на лист на нём стоит фильтр - код косячит...
Ну это можно поправить - сперва кодом скинуть фильтр, потом его заново поставить.
Красавец. Я Ваш должник.
riniks17 вне форума Ответить с цитированием
Старый 23.12.2012, 02:03   #13
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Цитата:
Сообщение от riniks17 Посмотреть сообщение
Я Ваш должник.
- ну зачем же... Всё в подписи (никто за язык не тянул )
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 23.12.2012, 18:18   #14
riniks17
Форумчанин
 
Регистрация: 15.12.2011
Сообщений: 355
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
- ну зачем же... Всё в подписи (никто за язык не тянул )
Ну ты и задал задачу. Пытался со счёта отблагодарить, да что-то не получается. Видать эти кошельки не дружат с банковской системой. А своего кошелька нету. Мож у тебя другие варианты есть?
Вопрос. Где в коде задан массив проверки 1го листа? И где столбец, где выставляется автофильтр? Я просто стараюсь привинтить этот код к своей задаче.

Последний раз редактировалось riniks17; 23.12.2012 в 18:20. Причина: дописал
riniks17 вне форума Ответить с цитированием
Старый 23.12.2012, 19:57   #15
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Да ладно с этим кошельком - если нет своего, то не буду настаивать бежать в торговый центр.
Шутка

Проверка первого листа:
Код:
        With Sheets("Лист1")
            a = Range(.[C2], .Range("B" & .Rows.Count).End(xlUp)).Value
        End With
        ReDim b(1 To UBound(a), 1 To 1)
        For i = 1 To UBound(a)
            If .exists((a(i, 1) & "|" & a(i, 2))) Then b(i, 1) = "Y"
        Next
Автофильтр не указан. Просто если он есть на листе, то он сбрасывается, чтоб код корректно отработал.
Но вообще я на 100% не тестил, если в процессе появятся косяки, то ничего не мешает их исправить (например если будут пустые строки...)
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 23.12.2012 в 20:01.
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск совпадений tigran67 Паскаль, Turbo Pascal, PascalABC.NET 0 29.03.2012 16:44
Поиск совпадений KillJoy Паскаль, Turbo Pascal, PascalABC.NET 2 05.09.2011 11:53
Поиск совпадений Серёга0629 Microsoft Office Excel 9 29.08.2011 09:22
Поиск совпадений Claster Общие вопросы Delphi 4 22.06.2011 17:34
Поиск совпадений в БД _PROGRAMM_ PHP 6 21.05.2010 13:53