Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Сравнение строк из списка  (Прочитано 13419 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
Ino
Гость
« : 17-11-2008 17:14 » 

Мы сами люди не местные) Помогите сделать макрос легкий, пожалуйста.  Скромно так...
Допустим, есть книга с двумя листами. На одном листе есть список, например в столбце С, какое-то колличество строк. И на втором листе есть список - столбец В, тоже неизвестное число строк. Необходимо сравнить все строки из списка с первого листа на наличие совпадений во втором списке, и если совпадения есть, нужно в первом списке отметить совпавшую строку как угодно.
« Последнее редактирование: 17-11-2008 19:53 от Ghost » Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 17-11-2008 19:51 » 

Ino, я делаю тупо и без всяких макросов, зато оперативно:

1. Копирую столбцы на один лист и сортирую оба по отдельности по возрастанию.
2. Делаю формулу сравнения типа =ЕСЛИ(A1=A2;'-';'!!!!!!!!')
3. Копирую формулу по всей высоте наименьшего по высоте столбца.
4. Просматриваю результат вычисления сверху вниз: если увижу различие (обозначено "!!!!!!!!"), то смотрю, есть ли совпадения в этом районе и ниже и сдвигаю один из столбцов вниз вставкой пустых ячеек до тех пор, пока значения не совпадут.
5. Возвращается на п.3.

Метод прост и подходит для сравнения двух списков, имеющих мало отличий.

VBA просто не люблю, хотя макросы писал.

Слава дал вполне дельный совет: пройди по соседним темам - подобные вопросы задают часто. Отвечать он не обязан - никто тут никому не обязан.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Ino
Гость
« Ответ #2 : 17-11-2008 19:59 » new

RXL, а я и не говорила, что обязан)
Спасибо большое, совет ценный. Правда мне надо именно макрос. Но это тоже очень пригодится, может даже вместо макроса прокатит) Огромное спасибо!)
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 17-11-2008 20:06 » 

Да, к формуле: это для сравнения чисел. Функция сравнения строк - СОВПАД(A1;B1).

Нашел у себя такое:

Код: (Text)
Dim i As Integer
Dim n As Integer

For i = 1 To 90
        For n = 1 To 597
                If Worksheets("Лист1").Cells(n, 1) = Worksheets("Лист1").Cells(i, 3) Then
                        Worksheets("Лист1").Cells(i, 2) = Worksheets("Лист1").Cells(n, 4)
                        GoTo out
                End If
        Next n
out:
Next i

Думаю, тут не сложно будет догадаться, что сравнивается, что делается и как изменить.
« Последнее редактирование: 18-11-2008 04:48 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 17-11-2008 20:08 » 

гы
0.5 секунд
http://support.microsoft.com/kb/213367/ru
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Naghual
Модератор

ua
Offline Offline
Пол: Мужской
ОПТИМИСТ


WWW
« Ответ #5 : 17-11-2008 21:27 » 

Ребятки (Sla и Ino).
Вы развели никому тут не нужный флуд.
Я уважаю мнение Sla (ибо сам такой-же), однако бывают такие ситуации, когда человеку необходим конкретный ответ.
Посему, правом данным мне (Sla угадай кем Ага), я вычищаю топик.
Записан
Ino
Гость
« Ответ #6 : 17-11-2008 22:18 » 

Ваа, огромное спасибо, ребята)) Что бы я без вас делала ^^ Очень большое спасибо))
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 18-11-2008 16:14 » 

Есть еще рецепт без макроса
Рядом с каждой ячейкой из списка строк на первом листе записываем формулу
Код:
=COUNTIF(ОБЛАСТЬ_НА_ВТОРОМ_ЛИСТЕ, НАЗВАНИЕ_ЯЧЕЙКИ_СО_СТРОКОЙ)
Тогда в каждой ячейке с формулой будет число - сколько раз соответствующее слово встретилось во втором листе. Если не ноль, значит строка на втором листе есть
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines