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

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

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

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

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

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

да невнимательность....... но gt и lol макрос нашел а lal не попал
jm2m вне форума Ответить с цитированием
Старый 29.08.2012, 20:19   #12
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

lal не попал потому, что в начальных условиях было "столбца А (30 тыс строк) и столбца С (500 строк )" - т.е. диапазон можно определять по первому столбцу.
Я так и сделал.
А lal в C сидит ниже - его нет в сравниваемых данных в столбце C, поэтому его и нет в совпадениях.
Перенесите его в 33 строку - и всё ОК.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 29.08.2012, 20:28   #13
jm2m
Пользователь
 
Регистрация: 28.08.2012
Сообщений: 10
По умолчанию Сравнение двух столбцов на одном листе

по моему у меня лыжи не едут
смотрю пример - lal в столбике А в 25 строке в столбике С в 44
почему тогда не входит в диапазон?
jm2m вне форума Ответить с цитированием
Старый 29.08.2012, 20:30   #14
jm2m
Пользователь
 
Регистрация: 28.08.2012
Сообщений: 10
По умолчанию Сравнение двух столбцов на одном листе

получается что данные сравниваются при условии 30 тыс строк данных в А и 500 строк данных в С? а если данные к примеру в одном из столбцов выйдут из диапазона?
jm2m вне форума Ответить с цитированием
Старый 29.08.2012, 20:36   #15
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от jm2m Посмотреть сообщение
заменил AS5 на AS25000 везде) не ищет , только по первой ячейке С1
Господа ткните пальцем - сделай так и так.
Во вложении пример
Вы формулу только в ячейке D1 написали, а надо во всём диапазоне
Как быстро заполнить 30 тысяч ячеек ссылку давал ранее
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 29.08.2012, 20:44   #16
jm2m
Пользователь
 
Регистрация: 28.08.2012
Сообщений: 10
По умолчанию Сравнение двух столбцов на одном листе

Хьюго, вот в примере части списков , не понимаю почему не ищет
Егоров Юрий Владимирович ?
Серж я понял, буду читать ...
Вложения
Тип файла: zip example-2.zip (6.7 Кб, 7 просмотров)
jm2m вне форума Ответить с цитированием
Старый 29.08.2012, 20:56   #17
jm2m
Пользователь
 
Регистрация: 28.08.2012
Сообщений: 10
По умолчанию Сравнение двух столбцов на одном листе

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

Код:
"Егоров Юрий Владимирович         "
- вот интересно, почему не ищет?
Нет, конечно на практике всегда "от дурака" нужно application.trim использовать...
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 29.08.2012 в 21:24.
Hugo121 вне форума Ответить с цитированием
Старый 29.08.2012, 21:23   #19
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,170
По умолчанию

Добавил:
Код:
Sub compare()
    Dim tm!: tm = Timer
    Dim a(), i&, ii&, t$

    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(Application.Trim(a(i, 1))) = 0&
            Next

            For i = 1 To UBound(a)
                t = Application.Trim(a(i, 3))
                If Len(t) Then
                    If .exists(t) Then
                        ii = ii + 1
                        b(ii, 1) = t
                    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
В этом коде первый столбец должен быть длиннее третьего.
Если возможны варианты - то или массив нужно делать по самому длинному столбцу, или лучше добавить ещё один массив (так кстати и чуть быстрее будет работать - не нужно будет перебирать пустые ячейки, которые сейчас отсекаются If Len(Application.Trim(a(i, 3))) Then).
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 29.08.2012 в 21:26. Причина: оптимизация кода :)
Hugo121 вне форума Ответить с цитированием
Старый 29.08.2012, 21:24   #20
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от jm2m Посмотреть сообщение
Серж, расплодил формулу по всем ячейкам D , и вот что странно если копируешь ячейку из А в С сразу показывает в D совпадение....но если в С копируешь столбец с фамилиями из другой таблицы и есть совпадения по А и С то в D ничего нет
Причин может быть много, одну уже назвал Игорь.
Что бы не гадать - нужен файл с проблемой. Оставьте только то значение, которое не ищется, остальные удалите
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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