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

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

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

ru
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 » 

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

ru
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