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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2010, 15:14   #1
andreton
Пользователь
 
Регистрация: 31.05.2010
Сообщений: 25
По умолчанию Сравнивание названий в ячейках Exel и перенос несовпавших вниз

Приветствую всех знающих! Нужна ваша помощь, нужен скрипт, который сделает следущие вещи, следствие этого – намного упростятся дальнейшие задачи. Премного благодарен заранее! Итак, по порядку:
Есть файл example.xls в котором пять вкладок: Исходный файл_1, Выходной файл_1, Исходный файл_2, Выходной файл_2,Итоговый файл.
Исходный файл_1 – есть две колонки (обозначенные разным цветом для понятия задачи), столбцы B и F содержат названия. Нужно каждое название из столбца F сравнить с названиями из столбца B, и если название совпадает, то из ячейки этой же строчки, но соседнего столбца E копируем значение в столбец A возле совпадающего названия и оставляем запись на месте, если названия не совпадает, тогда вся строка, начиная со столбца E вырезается и вставляется вниз поочередно, ниже уровня условно разделенных двух колонок(той, в которой больше позиций), под первой колонкой.
Выходной файл_1 – то что должны получить после работы скрипта. Сиреневатые ячейки столбца А – скопированные из соседних ячеек совпавших названий(столбца Е). Голубой столбец остался неизменен. Сиреневые строки – это те, что совпали, и зеленоватые – те что не совпали, их вырезали и вставили вниз поочередно.
Исходный файл_2, Выходной файл_2 – смысл тот же, только иные столбцы, а также при переносе несовпадающих сторочек значения из столбца N переносятся в столбец А.
Исходник в Итоговом файле(с ним ничего не нужно делать, он как пример, того что должно получиться). По сути дела нужны два сходных скрипта с различными параметрами, или один универсальный. Всех, кому не составит большого труда помочь в этом вопросе, помогите, плиз!
Вложения
Тип файла: rar example.rar (13.9 Кб, 9 просмотров)

Последний раз редактировалось andreton; 06.09.2010 в 15:16.
andreton вне форума Ответить с цитированием
Старый 06.09.2010, 15:28   #2
Hugo121
Старожил
 
Регистрация: 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
Hugo121 вне форума Ответить с цитированием
Старый 06.09.2010, 18:31   #3
andreton
Пользователь
 
Регистрация: 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
Вложения
Тип файла: zip Sample__19-01-2010__17-47-30.zip (11.6 Кб, 8 просмотров)
andreton вне форума Ответить с цитированием
Старый 06.09.2010, 23:38   #4
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Так пойдет?
Вложения
Тип файла: zip example.zip (85.0 Кб, 11 просмотров)
nilem вне форума Ответить с цитированием
Старый 07.09.2010, 11:42   #5
andreton
Пользователь
 
Регистрация: 31.05.2010
Сообщений: 25
По умолчанию

Спасибо, nilem! Работает, когда заполнены все четыре вкладки:Исх1,Вых1,Исх2,Вых2. Но вначале, всех четырех заполненых нет. Они вытекают друг из друга.
Процесс такой: в Исх1 добавляем данные и в Вых1 получаем данные, в виде как в example.xls, то есть получается что на Вых1 нужен скрипт для обработки Исх1. За этим данные из Вых1 переносятся(вручную) на вкладку Исх2 и там дополняются новыми данными(снова в ручную). Вых2 обрабатывает данные из Исх2 и заполняет сам себя. Вот теперь все эти четыре файла заполнены и итоговый макрос работает! Нужны еще два макроса для вкладок Вых1 и Вых2.

Уважаемый, nilem! Уж если Вы откликнулись на мою просьбу, помогите с конечным решением этого вопроса!Спасибо!
andreton вне форума Ответить с цитированием
Старый 07.09.2010, 16:50   #6
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

Мне кажется, масло масленое получилось, но ... хозяин - барин.
Проверяйте.
Вложения
Тип файла: zip example.zip (99.4 Кб, 17 просмотров)
nilem вне форума Ответить с цитированием
Старый 07.09.2010, 20:21   #7
andreton
Пользователь
 
Регистрация: 31.05.2010
Сообщений: 25
По умолчанию

Огромное спасибо Вам, nilem! Выручили! А вкладка ИтогоМакрос действительно ненужна. Вопрос решен.
andreton вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клиент - Сервер : Сравнивание 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