|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.09.2010, 15:14 | #1 |
Пользователь
Регистрация: 31.05.2010
Сообщений: 25
|
Сравнивание названий в ячейках Exel и перенос несовпавших вниз
Приветствую всех знающих! Нужна ваша помощь, нужен скрипт, который сделает следущие вещи, следствие этого – намного упростятся дальнейшие задачи. Премного благодарен заранее! Итак, по порядку:
Есть файл example.xls в котором пять вкладок: Исходный файл_1, Выходной файл_1, Исходный файл_2, Выходной файл_2,Итоговый файл. Исходный файл_1 – есть две колонки (обозначенные разным цветом для понятия задачи), столбцы B и F содержат названия. Нужно каждое название из столбца F сравнить с названиями из столбца B, и если название совпадает, то из ячейки этой же строчки, но соседнего столбца E копируем значение в столбец A возле совпадающего названия и оставляем запись на месте, если названия не совпадает, тогда вся строка, начиная со столбца E вырезается и вставляется вниз поочередно, ниже уровня условно разделенных двух колонок(той, в которой больше позиций), под первой колонкой. Выходной файл_1 – то что должны получить после работы скрипта. Сиреневатые ячейки столбца А – скопированные из соседних ячеек совпавших названий(столбца Е). Голубой столбец остался неизменен. Сиреневые строки – это те, что совпали, и зеленоватые – те что не совпали, их вырезали и вставили вниз поочередно. Исходный файл_2, Выходной файл_2 – смысл тот же, только иные столбцы, а также при переносе несовпадающих сторочек значения из столбца N переносятся в столбец А. Исходник в Итоговом файле(с ним ничего не нужно делать, он как пример, того что должно получиться). По сути дела нужны два сходных скрипта с различными параметрами, или один универсальный. Всех, кому не составит большого труда помочь в этом вопросе, помогите, плиз! Последний раз редактировалось andreton; 06.09.2010 в 15:16. |
06.09.2010, 15:28 | #2 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Только сегодня уже отвечал на другом форуме, даже текст менять не буду:
== В деталях задача не ясна, но в общих чертах понятно. У меня есть универсальный инструмент для таких задач - http://hugo.nxt.ru/CompareFiles.Find.rar В настройках макроса указываете, что с чем сравнивать и куда что копировать. В свободные столбцы в обоих файлах можно ставить пометки о совпадении данных - так можно выявить ненайденное и повторы. Можно сравнивать как на одном листе, так и на разных листах и в разных файлах. Тестовый период - 15 запусков, извините... но на эту задачу хватит. == Добавлю - конечно, есть ручной труд, но зато Вы сами можете подстроить под любую свою задачу такого типа. И используйте пометки - по ним потом отберёте ненайденные. Альтернативный линк: http://excel.ucoz.ru/index/comparefiles_find/0-25
webmoney: E265281470651 Z422237915069 R418926282008
|
06.09.2010, 18:31 | #3 |
Пользователь
Регистрация: 31.05.2010
Сообщений: 25
|
Нашел здесь от EducatedFool такой вот скрипт, он выбирает те строки, какие есть в столбце, а мне нужны те , которых нет. Подскажите,плиз, что поменять в этом коде?
Sub test() On Error Resume Next: Application.ScreenUpdating = False Dim sh2 As Worksheet: Set sh2 = Worksheets(2) sh2.UsedRange.Clear ' очистка листа от прежних данных Dim cell As Range, ra As Range, ForCopy As Range ' перебираем все заполненные ячейки в столбце Е Set ra = Range([e1], Range("e" & Rows.Count).End(xlUp)).SpecialCells (xlCellTypeConstants) For Each cell In ra.Cells If Not Range("a:a").Find(cell) Is Nothing Then ' если аналогичный номер есть в столбце А If ForCopy Is Nothing Then Set ForCopy = cell Else Set ForCopy = Union(ForCopy, cell) If ForCopy.Cells.Count > 1000 Then ForCopy.EntireRow.Copy sh2.Range("a" & sh2.Rows.Count).End(xlUp).Offset(1) Set ForCopy = Nothing End If End If Next cell ForCopy.EntireRow.Copy sh2.Range("a" & sh2.Rows.Count).End(xlUp).Offset(1) sh2.UsedRange.EntireColumn.AutoFit: sh2.Rows(1).Delete sh2.Activate End Sub |
06.09.2010, 23:38 | #4 |
Форумчанин
Регистрация: 25.04.2010
Сообщений: 616
|
Так пойдет?
|
07.09.2010, 11:42 | #5 |
Пользователь
Регистрация: 31.05.2010
Сообщений: 25
|
Спасибо, nilem! Работает, когда заполнены все четыре вкладки:Исх1,Вых1,Исх2,Вых2. Но вначале, всех четырех заполненых нет. Они вытекают друг из друга.
Процесс такой: в Исх1 добавляем данные и в Вых1 получаем данные, в виде как в example.xls, то есть получается что на Вых1 нужен скрипт для обработки Исх1. За этим данные из Вых1 переносятся(вручную) на вкладку Исх2 и там дополняются новыми данными(снова в ручную). Вых2 обрабатывает данные из Исх2 и заполняет сам себя. Вот теперь все эти четыре файла заполнены и итоговый макрос работает! Нужны еще два макроса для вкладок Вых1 и Вых2. Уважаемый, nilem! Уж если Вы откликнулись на мою просьбу, помогите с конечным решением этого вопроса!Спасибо! |
07.09.2010, 16:50 | #6 |
Форумчанин
Регистрация: 25.04.2010
Сообщений: 616
|
Мне кажется, масло масленое получилось, но ... хозяин - барин.
Проверяйте. |
07.09.2010, 20:21 | #7 |
Пользователь
Регистрация: 31.05.2010
Сообщений: 25
|
Огромное спасибо Вам, nilem! Выручили! А вкладка ИтогоМакрос действительно ненужна. Вопрос решен.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Клиент - Сервер : Сравнивание DLL | jONNY[ReWIRE] | Общие вопросы C/C++ | 3 | 15.08.2010 06:48 |
Сравнивание ячеек двух таблиц | Rainkhz | Общие вопросы Delphi | 2 | 29.05.2010 19:16 |
Excel - перенос данных в ячейках | beerbitch | Microsoft Office Excel | 15 | 12.03.2010 17:33 |
Сравнивание цветов | Zeraim | Общие вопросы Delphi | 7 | 26.04.2008 12:49 |
Совпадение названий программ | mutabor | Свободное общение | 3 | 25.10.2007 19:40 |