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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2012, 21:50   #1
jm2m
Пользователь
 
Регистрация: 28.08.2012
Сообщений: 10
По умолчанию Сравнение двух столбцов на одном листе

Необходимо провести сравнение столбца А (30 тыс строк) и столбца С (500 строк ), все совпадения вывести в столбец D и покрасить все совпадения по столбцам А и С
Пример в архиве
спасибо
Вложения
Тип файла: zip пример.zip (2.4 Кб, 29 просмотров)
jm2m вне форума Ответить с цитированием
Старый 28.08.2012, 22:10   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

А красить-то зачем?
Код:
Sub tt()
    Dim c As Range, cc As Range
    With ActiveSheet
        For Each c In Intersect(.UsedRange, .Columns(1)).Cells
            For Each cc In Intersect(.UsedRange, .Columns(3)).Cells
                If Len(c.Value) Then
                    If c.Value = cc.Value Then
                        c.Interior.Color = vbYellow: cc.Interior.Color = vbYellow
                        cc.Copy cc.Offset(, 1)
                    End If: End If
            Next: Next
    End With
End Sub
Сразу говорю - быстро не будет. Ну как просили (т.е. не просили...). у меня тут тоже необходимо...
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 28.08.2012 в 22:13.
Hugo121 вне форума Ответить с цитированием
Старый 28.08.2012, 22:18   #3
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
А красить-то зачем?
Верно
Но формула работает быстро
Вложения
Тип файла: rar jm2m.rar (3.1 Кб, 33 просмотров)
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 28.08.2012, 22:27   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вообще этот мой код можно ускорить, кое-что перевернув и поменяв местами. И отключив.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.08.2012, 22:46   #5
jm2m
Пользователь
 
Регистрация: 28.08.2012
Сообщений: 10
По умолчанию Сравнение двух столбцов на одном листе

Хьюго, раскраска так для баловства, да...надолго повисла...
Серж, я в экселе и в програмерских делах ноль на палочке, напиши в формуле пож-та сравнение 30.000 строк столбца А с 1.000(тыс) строк столбца С, вывод совпадений в D .... вставлять формулу надо для столбика D , все верно?
Помогите ламеру :-)
jm2m вне форума Ответить с цитированием
Старый 28.08.2012, 23:32   #6
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Тут не надо быть программистом, достаточно простой логики...
Просто замените все ссылки A$5 в формуле на A$30000
Как быстро заполнить 30 тысяч ячеек читайте здесь
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 28.08.2012, 23:34   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ладно, раз уж просьба прозвучала...
Код:
Sub compare()
    Dim tm!: tm = Timer
    Dim a(), i&, ii&

    With Sheets(1)    'используется номер листа
        a = Range(.[c1], .Range("A" & .Cells(Rows.Count, 1).End(xlUp).Row)).Value

        ReDim b(1 To UBound(a), 1 To 1)

        With CreateObject("Scripting.Dictionary")

            For i = 1 To UBound(a)
                .Item(a(i, 1)) = 0&
            Next

            For i = 1 To UBound(a)
                If Len(a(i, 3)) Then
                    If .exists(a(i, 3)) Then
                        ii = ii + 1
                        b(ii, 1) = a(i, 3)
                    End If
                End If
            Next
        End With
        If ii > 0 Then .[d1].Resize(ii, 1) = b
    End With

    MsgBox "Выполнено за " & Format((Timer - tm) / 24 / 60 / 60, "nn:ss") & " сек."
End Sub
Будет мнгновенно, но без покраски и копирования напротив совпавших (хотя это можно без потерь скорости добавить) - просто соберёт всех в кучку. На повтор повторов отсева нет!
Можно ещё чуть ускорить - определить строку третьего столбца, до которой перебирать массив. Но т.к. это всего лишь доля секунды экономии - поленился.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 28.08.2012 в 23:37.
Hugo121 вне форума Ответить с цитированием
Старый 29.08.2012, 18:30   #8
jm2m
Пользователь
 
Регистрация: 28.08.2012
Сообщений: 10
По умолчанию Сравнение двух столбцов на одном листе

заменил AS5 на AS25000 везде) не ищет , только по первой ячейке С1
Макрос тоже прогонял, ничего не получается .
Господа ткните пальцем - сделай так и так.
Преогромное спасибо.
Во вложении пример
Вложения
Тип файла: zip ex.zip (8.9 Кб, 17 просмотров)
jm2m вне форума Ответить с цитированием
Старый 29.08.2012, 18:31   #9
jm2m
Пользователь
 
Регистрация: 28.08.2012
Сообщений: 10
По умолчанию Сравнение двух столбцов на одном листе

прошу прощения...в примере результат конечно должен быть в столбике D
jm2m вне форума Ответить с цитированием
Старый 29.08.2012, 18:34   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну конечно...
В коде первая действующая строка какая?

With Sheets(1)
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение двух столбцов в разных книгах LAnLorD Microsoft Office Excel 132 17.05.2022 08:16
QuickReport создание двух копий на одном листе t.baychorov Общие вопросы Delphi 0 25.04.2012 18:47
Сравнение двух столбцов mGm Microsoft Office Excel 1 15.02.2012 21:39
в продолжение темы ..сравнение двух столбцов shrek301 Microsoft Office Excel 1 18.01.2012 11:48
Обмен двух столбцов на листе местами Decker Microsoft Office Excel 3 14.02.2010 14:31