Страницы: 1
RSS
С помощью VBA необходимо сравнить между собой 2 списка
 
Доброе время суток, уважаемые форумчане!  
Извините за поздний визит! Целый день пытаюсь в просторах интернета найти решение поставленной передо мной задачи, но к сожалению часы потеряны зря! Набралась духа и решила обратиться за помощью к профессионалам!  
 
Задача:  
С помощью VBA необходимо сравнить между собой 2 списка и выделить одним цветом те строки, которые представлены в обоих списках, другим цветом - которые не представлены.  
 
Файл с исходными данными во вложении.  
 
Заранее благодарю!!!
 
По какому принципу сравнивать списки? только по ФИО или еще что-то?
 
Наслаждайтесь
 
Ув. Baklanoff, здравствуйте :)  
 
Необходимо сравнивать строки, содержащие 3 параметра, в данном случае параметры это - столбец 1, столбец 2, столбец 3.  
 
Т.е. Строка n в Списке(2), и строка j в Списке (1) выделяется, например, красным в случае полного совпадения (одновременно) "столбец 1", "столбец 2", "столбец 3".  
Если какой-то из параметров СТРОКИ ("столбец 1", "столбец 2", "столбец 3") не совпадают, то в списках данные строки выделяются, например, желтым.  
 
Здесь, именно, задача в сравнении строк, а не значений ячеек в столбцах.  
 
Очень надеюсь, что смогла правильно объяснить.  
Заранее извиняюсь за свою некомпетентность :)
 
{quote}{login=Baklanoff}{date=15.11.2012 01:23}{thema=}{post}Наслаждайтесь{/post}{/quote}  
Ого)) Вы опередили мой комментарий))  
Спасибо большое)    
Однако немного другая задача!  
Уже попыталась ее описать в предыдущем ответе!)
 
Так объедините их формулой =СЦЕПИТЬ, затем проверяйте макросом.
 
Буду пробовать! :)  
ОГРОМНОЕ ВАМ СПАСИБО!!!!
 
Пробуйте
 
Baklanoff, это похоже на то, что требуется!!!    
 
Извините за наглость, но вы единственный, кто в этот час суток откликнулся на мою просьбу, поэтому задаю еще вопросы:    
 
как сделать чтобы в обоих списках выделялись совпавшие строки? и почему-то макрос срабатывает некорректно, например, в отношении данной стоки: "1016 3 850.00 Сидоров Петр Петрович" - она же есть в обоих списках.  
 
Совсем забыла, что днем уже Пробовала использовать и =СЦЕПИТЬ() и ВПР - беда в том, что не получается именно то, что необходимо (см.задача).
 
dasha, нет там совпадений, потому и не закрашивает. На листе1 числа введены через точку и с пробелом, а на листе2 как положено: через запятую и без пробелов.
 
Ура!!! Вы гений! СПАСИБО!
 
Добрый день))) Я все со своим самоваром))  
Извините, но, увы, у меня не получается усовершенствовать Ваш, Baklanoff, макрос!  
Очень нужна помощь!  
Возможно ли сравнивать только цифры и буквы в ячейках строк, т.е. без пробелов и запетых (где они встречаются).    
Тогда это очень упростит задачу. Поскольку "Столбец_2" это один и тот же параметр но выгружается из разных программ поэтому формат различен (в одном списке он с пробелом и точкой (формат общий), в другом с запятой (формат числовой)), функция не меняет форматы, только если "перебивать ручками". "Ручками" менять очень долго (сток м.б. тысяч -ацать).  
 
Как-то же это можно сделать, чтобы игнорировать пробелы, запятые и точки, но как???? HELP!!!! :)
 
т.е. оставить Ваш, Baklanoff, макрос, но в нем где и как прописать, чтобы сравнивались только последовательность цифр и букв без знаков?  
 
ВСЕЛЕНСКИ буду благодарна за помощь!!!!
 
Зачем же ручками? Жмете Ctrl+F там есть вкладка заменить. Выделяете столбец, ищете "." заменяете на ",", точно также и с символом похожим на пробел (что именно это за символ, я затрудняюсь ответить, но точно не пробел - просто скопируйте его, вставьте в строку поиска и замените на "" (две кавычки подряд, без какого-либо символа посередине)).  
 
Писать заменяющий несколько щелчков мыши код - не лучшая идея. Поищите по форуму что-то вроде "преобразования форматов" или что-то в этом духе.
 
Baklanoff, если Вы уже захотели объявлять переменные, тогда почему не присваиваете им необходимые типы? Зачем практически всё объявлять как Variant? Зачем вообще тогда их объявлять? Можно смело убрать Option Explicit.  
 
Ведь можно сэкономить ресурсы и сделать нормально, к примеру: Row1 As Integer (или Long), Value1 As String и т.п.
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
LightZ, да что ж вам мои коды покоя не дают?:)  
Был первый второй час ночи. Переменные писал для циклов For Each In, потом понял, что идея неудачная и переписал под For = To, а про переменные забыл.
 
Просто интересно посмотреть  
Меня так же учили на этом форуме :)  
Вы вроде бы не плохо в ВБА разбираетесь, а допускаете такие недочеты
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
Ну если в таких целях, то спасибо:) И за оценку тоже.  
Кстати, в прошлый раз (при вставке картинки), эффективнее было использовать конструкцию With, чем дважды писать Target.Range.
 
Возможно, там много лишнего было
Киса, я хочу Вас спросить, как художник — художника: Вы рисовать умеете?
 
Ну начинается... :)
Страницы: 1
Читают тему
Loading...