![]() |
Excel 2010 фильтр 1 и 2 листа скопировать на новый лист
Всем привет! Не знаю как решить во такую задачку - на 1 и на 2 листе Информация из трех столбцов:
в первом она повторяется числовая в принципе с ней ничего не нужно делать только выносить на новую страницу со всей строкой во втором уникальна числовая (но может совпадать в листе1 с лист2) можно считать что это ID в третьем ФИО Нужно отфильтровать и вывести ТОЛЬКО УНИКАЛЬНЫЕ значения только со второго листа, уникальные значения первого листа не нужны, на новую страницу фильтр нужно вести по двум параметрам ФИО и ID Как это вообще можно сделать - я знаю но способ очень кривой, занимает много времени и повторять его нужно для 23 файлов - не хочется) в каждом от 2 тыс. записей Подскажите как можно это реализовать ? Заранее благодарен. Таблица выглядит примерно так - состоит из 2-8 тысяч записей, нужно вынести "появившиеся" во втором листе записи, которых НЕТ в листе 1 |
Данные - Удалить дубликаты
|
Цитата:
|
The Off, заполните верхнюю строчку на листе 3 (например, "Номер", "ID", "ФИО") - обязательно. Добавьте модуль, вставьте в него текст
Код:
Sub findnew() Формулами решение, наверное, есть, но честно, лень искать. Предполагалось, что ID и ФИО все-таки соответствуют друг другу. |
okshef, Огромное Вам спасибо !!! Я поначалу даже и не думал о модулях !!! Теперь не придется тратить каждый месяц на это целую кучу рабочего времени
|
The Off, спасибо за отзыв, рад, что смог помочь, хотя не считаю себя большим спецом в Excel. Код немного поправил - удалил ненужную строчку. Функциональность не меняется, но чуть-чуть ускоряется.
|
okshef, ну ты быстро сообразил, как это можно реализовать, я бы только завтра догадался, что можно это с помощью модуля сделать, у меня будет еще 1 вопрос, но по access, изложу немного позже в новой теме, когда появится время
okshef, подскажи пожалуйста как добавить еще один столбец в выборку ? я просто в программировании вообще не силен... |
Поточнее можно?
|
okshef, ну появилась необходимость делать выборку еще по одному критерию получается таблица будет состоять уже из 4 столбцов вот нужно новый четвертый добавить это можно сказать "второй ID"
|
Сделайте примерный файл из 10 строчек с желаемым результатом (кнопка "Прикрепить файл" справа от окна ввода сообщения).
|
Вложений: 1
Пример 10 строк с желаемым результатом
|
То есть критерий отбора останется тот же, но в результаты нужно добавить 4-й столбец? Или все-таки 4-й столбец является критерием отбора?
|
4-й столбец так же является критерием поиска
|
Простите за массу уточняющих вопросов, но наличие 2-го критерия значительно усложняет задачу.
То есть алгоритм поиска выглядит так: 1) сравнить листы по второму столбцу 2) в случае отсутствия данных перейти к четвертому столбцу 3) если данные не совпадают - перенести на лист 3 4) если данные в 4-м столбце совпадают - продолжить поиск Так? |
1) сравнить листы по второму столбцу
2) если данные не совпадают - перенести на лист 3 3) если данные в 4-м столбце совпадают - продолжить поиск то есть 4 столбец мы смотри уже среди найденных в 1 пункте |
Опять неясность: то есть перенос в любом случае осуществляется при отсутствии в списке на листе 1 только по критерию 2.
Цитата:
|
Вложений: 1
Прошу прощения, задавал очень глупые вопросы, уже придумал решение, но теперь нужно оставить выборку как и была и на третий лист копировать только первый и третий столбцы. То есть без столбца, по которому выполнялась выборка.
|
Код:
Sub findnew() |
okshef, Все работает как нужно !!! СПАСИБО ОГРОМНОЕ !!!
Еще одно - нужно удалить дубликаты на получившемся списке (некоторые записи повторяются дважды во втором листе только обнаружил) как это добавить в модуль? |
Добавьте после Next
Код:
Worksheets(3).UsedRange.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes |
Вложений: 1
okshef, он выдает ошибку
|
The Off, поправил код. Точно, у вас же 2 столбца.
|
okshef, все равно ругается (
|
Вставьте модуль с таким кодом:
Код:
Sub findnew() |
Вложений: 1
код чуть переделал (появилась необходимость добавить еще 1 столбец)
Код:
Sub findnew() выдает вот такую ошибку файл с логом - пустой |
Вложений: 1
У меня все выполняется без ошибок
Другие файлы не открыты? Excel точно 2010? |
okshef, а возможно ли подтягивать точно так же данные из разных файлов? например не из лист1-лист2 а из файлов filename1 и filename2
|
The Off, я сам не делал, попробуйте. Введите переменные, как вы их назвали
Цитата:
Код:
Set filename1=x:\dir1\dir2\dir3\file1.xls Код:
Worksheets(2).Range("a" & c.Row).Copy Worksheets(3).Range("a" & Worksheets(3).Cells.Rows.Count).End(xlUp)(2) Код:
filename1.Worksheets(2).Range("a" & c.Row).Copy filename2.Worksheets(3).Range("a" & filename2.Worksheets(3).Cells.Rows.Count).End(xlUp)(2) Ох и тяжко вспоминать задачки почти годовалой давности :) |
Сделал вот так, он мне скопировал все как нужно, во время "написания" заметил фишку в том, что в одних excel таблицах столбцы обозначаются как 123456 а в других abcdef - это слияет на код ? например If filename1.Worksheets(1).[c:c].Find(c.Value) Is Nothing Then или же If filename1.Worksheets(1).[3:3].Find(c.Value) Is Nothing Then
Код:
|
Еще вопрос по инету шарю - пока найти не могу, как сделать так, что бы нужно было "указывать" файл 1 и файл 2 как в "проводнике"
|
Нашел вот такой код (http://www.excelworld.ru/forum/2-2898-1). Нужно только "допилить под себя"
|
Время: 09:56. |
Время: 09:56.
© OSzone.net 2001-