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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2011, 17:59   #1
contrelesgaz
 
Регистрация: 26.01.2011
Сообщений: 9
По умолчанию Сравнение 3 столбцов и удаление уникальных значений.

Добрый вечер.

В столбце "A" находится урезанный список компаний. В "B" полный список, в "C" e-mailы к столбцу "B".

Требуется удалить из B и соотнесенного с ним С значения, которых нет в A.

Я уже не могу. Голову о клавиатуру разбил уже.

Заранее спасибо.
contrelesgaz вне форума Ответить с цитированием
Старый 26.01.2011, 18:09   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

упс.......

Так, ладно - можно это приспособить:
http://www.planetaexcel.ru/forum.php?thread_id=23700
Вставляете на разные листы ваши А и B,C (со второй строки).
Вместо строки
Код:
If a(i, 1) = b(ii, 1) Then Sheets("НОВЫЙ").Rows(i).EntireRow.Delete
пишите
Код:
If a(i, 1) = b(ii, 1) Then Sheets("НОВЫЙ").Cells(i,5)="есть!"
Потом по этой метке фильтруете/сортируете и удаляете.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 26.01.2011 в 18:17. Причина: Не так понял сперва...
Hugo121 вне форума Ответить с цитированием
Старый 26.01.2011, 18:55   #3
Djeki
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 136
Смех

Цитата:
Сообщение от contrelesgaz Посмотреть сообщение
Добрый вечер.
В столбце "A" находится урезанный список компаний. В "B" полный список, в "C" e-mailы к столбцу "B". Требуется удалить из B и соотнесенного с ним С значения, которых нет в A.
Автофильтром по столбцу "А" - скрыть пустые строки, а затем копируете результат на новый лист и всё..
Djeki вне форума Ответить с цитированием
Старый 27.01.2011, 03:25   #4
contrelesgaz
 
Регистрация: 26.01.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Djeki Посмотреть сообщение
Автофильтром по столбцу "А" - скрыть пустые строки, а затем копируете результат на новый лист и всё..
вообще не понял зачем это. и как.

я просто переводчик и с excel чуть не первый раз так общаюсь плотно..
contrelesgaz вне форума Ответить с цитированием
Старый 27.01.2011, 03:33   #5
contrelesgaz
 
Регистрация: 26.01.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
упс.......

Так, ладно - можно это приспособить:
http://www.planetaexcel.ru/forum.php?thread_id=23700
Вставляете на разные листы ваши А и B,C (со второй строки).
Вместо строки
Код:
If a(i, 1) = b(ii, 1) Then Sheets("НОВЫЙ").Rows(i).EntireRow.Delete
пишите
Код:
If a(i, 1) = b(ii, 1) Then Sheets("НОВЫЙ").Cells(i,5)="есть!"
Потом по этой метке фильтруете/сортируете и удаляете.
Те на первом листе все как было, на втором A, на третьем B & C.

первую функцию я сую в первую ячейку второго листа, вторую в первую ячейку третьего. наверное я что-то не понял. или первая формула была из того макроса и вторую вместо нее? но куда?

все плохо. я старался.
contrelesgaz вне форума Ответить с цитированием
Старый 27.01.2011, 03:54   #6
contrelesgaz
 
Регистрация: 26.01.2011
Сообщений: 9
По умолчанию

функция lookup или ВПР))))))))))))))

=ВПР(A79;C:D;2;0) и все.

Спасибо.
contrelesgaz вне форума Ответить с цитированием
Старый 27.01.2011, 09:16   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Если бы Вы показали небольшой пример в файле, мы бы на Вашем примере и сделали.
Если знать, что количество названий в пределе 1000, то конечно вполне годится ВПР() или СЧЁТЕСЛИ(), особенно если это разовая работа. Но если например нужно сверить два списка по 50000 названий, то я думаю ВПР() не поможет, или придётся долго ждать. В таком случае, или если эту работу нужно делать регулярно, удобнее макрос. Один раз написали код - потом только давайте ему данные и забирайте результат.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 27.01.2011, 12:11   #8
contrelesgaz
 
Регистрация: 26.01.2011
Сообщений: 9
По умолчанию

там около 4000))


эй, товарищи макрОсы, доставайте папиросы.
contrelesgaz вне форума Ответить с цитированием
Старый 28.01.2011, 07:10   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Можно так:
Код:
Sub Main()
    Dim i As Long, j As Long, x As Object, a(), b(), c()
    a = Range([A1], Cells(Rows.Count, 1).End(xlUp)).Value
    b = Range("B1:C" & Cells(Rows.Count, 2).End(xlUp).Row).Value
    ReDim c(1 To UBound(b, 1), 1 To 2): j = 1
    Set x = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(a, 1)
        If Not x.Exists(a(i, 1)) Then x.Add a(i, 1), CStr(1)
    Next
    For i = 1 To UBound(b, 1)
        If x.Exists(b(i, 1)) Then
            c(j, 1) = b(i, 1): c(j, 2) = b(i, 2): j = j + 1
        End If
    Next
    [B1].Resize(UBound(c, 1), 2).Value = c
End Sub
Пример во вложении.
Вложения
Тип файла: rar Книга2.rar (8.4 Кб, 50 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 28.01.2011 в 07:25.
SAS888 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение значений в 2х столбцах и удаление лишних значений.. Tyr Microsoft Office Excel 2 16.12.2010 18:19
сравнение столбцов в Excel и подстановка значений Oleg77 Помощь студентам 2 06.02.2010 03:09
Список уникальных значений PARTOS Microsoft Office Excel 13 18.12.2009 11:14
Сравнение 2 столбцов и удаление повторяющегося из второго столбца ildusfm Microsoft Office Excel 3 07.05.2009 09:09
Выборка уникальных значений Mary_star SQL, базы данных 9 11.02.2008 22:46