Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - [решено] Excel 2010 фильтр 1 и 2 листа скопировать на новый лист

Ответить
Настройки темы
2010 - [решено] Excel 2010 фильтр 1 и 2 листа скопировать на новый лист

Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: okshef
Дата: 04-11-2012
Всем привет! Не знаю как решить во такую задачку - на 1 и на 2 листе Информация из трех столбцов:
в первом она повторяется числовая в принципе с ней ничего не нужно делать только выносить на новую страницу со всей строкой
во втором уникальна числовая (но может совпадать в листе1 с лист2) можно считать что это ID
в третьем ФИО
Нужно отфильтровать и вывести ТОЛЬКО УНИКАЛЬНЫЕ значения только со второго листа, уникальные значения первого листа не нужны, на новую страницу фильтр нужно вести по двум параметрам ФИО и ID

Как это вообще можно сделать - я знаю но способ очень кривой, занимает много времени и повторять его нужно для 23 файлов - не хочется) в каждом от 2 тыс. записей
Подскажите как можно это реализовать ?
Заранее благодарен.

Таблица выглядит примерно так - состоит из 2-8 тысяч записей, нужно вынести "появившиеся" во втором листе записи, которых НЕТ в листе 1

читать дальше »
Лист1
30 13245 Иванова Екатерина Ивановна
40 54660 Петрова Нина Петровна
40 22321 Иванов Иван Иванович
50 23453 Петров Петр Иванович
50 22222 Тихомиров Василий Петрович
60 13244 Ноздрева Ирина Ивановна
40 54440 Петрова Екатерина Петровна
40 33321 Иванов Сергей Иванович
50 21153 Петров Иван Петрович
50 21112 Носов Василий Петрович

Лист2

30 13245 Иванова Екатерина Ивановна
40 54660 Петрова Нина Петровна
40 88897 Павлов Александр Иванович
50 23453 Петров Петр Иванович
50 22222 Тихомиров Василий Петрович
60 13244 Ноздрева Ирина Ивановна
40 54440 Петрова Екатерина Петровна
40 33321 Иванов Сергей Иванович
50 45544 Кузьмин Иван Сергеевич
50 13009 Каряев Михаил Петрович



желаемый результат

40 88897 Павлов Александр Иванович
50 45544 Кузьмин Иван Сергеевич
50 13009 Каряев Михаил Петрович

Отправлено: 13:55, 02-11-2012

 

Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Error.JPG
(16.8 Kb, 25 просмотров)

okshef, он выдает ошибку

Отправлено: 14:09, 09-11-2012 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Модератор


Moderator


Сообщения: 16855
Благодарности: 3248

Профиль | Сайт | Отправить PM | Цитировать


The Off, поправил код. Точно, у вас же 2 столбца.

-------
При заполнении сведений о конфигурации компьютера не забудь поставить флажок: отображать - "Да"
-------------------------------------------------------------------------------------------
Ассоциация VirusNet - помощь и обучение борьбе с вирусами. Некоторые вопросы загрузки в моем блоге


Последний раз редактировалось okshef, 09-11-2012 в 16:22.


Отправлено: 16:13, 09-11-2012 | #22


Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


okshef, все равно ругается (

Отправлено: 11:59, 15-11-2012 | #23


Модератор


Moderator


Сообщения: 16855
Благодарности: 3248

Профиль | Сайт | Отправить PM | Цитировать


Вставьте модуль с таким кодом:
Код: Выделить весь код
Sub findnew()
10        On Error GoTo LogError
20            For Each c In Worksheets(2).Columns(2).Cells
30                If Worksheets(1).[b:b].Find(c.Value) Is Nothing Then
40                    Worksheets(2).Range("a" & c.Row).Copy Worksheets(3).Range("a" & Worksheets(3).Cells.Rows.Count).End(xlUp)(2)
50                    Worksheets(2).Range("c" & c.Row).Copy Worksheets(3).Range("b" & Worksheets(3).Cells.Rows.Count).End(xlUp)(2)
60                End If
70                If IsEmpty(c) Then Exit For
80            Next
90        Worksheets(3).UsedRange.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
100   Exit Sub
LogError:
110       ErrorMsg = Now & " " & _
          "Error " & Err.Number & " (" & Err.Description & _
          ") in procedure findnew строка " & Erl
120       MsgBox ErrorMsg
130       With ThisWorkbook
140           Shell "cmd /c echo " & ErrorMsg & ">>""" & .Path & "\" & .Name & ".log"""
150       End With
160       Resume Next
End Sub
В папке с файлом образуется лог работы - приложите его к сообщению

-------
При заполнении сведений о конфигурации компьютера не забудь поставить флажок: отображать - "Да"
-------------------------------------------------------------------------------------------
Ассоциация VirusNet - помощь и обучение борьбе с вирусами. Некоторые вопросы загрузки в моем блоге


Последний раз редактировалось okshef, 15-11-2012 в 20:47.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:42, 15-11-2012 | #24


Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Error.JPG
(16.7 Kb, 26 просмотров)

код чуть переделал (появилась необходимость добавить еще 1 столбец)

Код: Выделить весь код
Sub findnew()
      On Error GoTo LogError
          For Each c In Worksheets(2).Columns(2).Cells
                If Worksheets(1).[b:b].Find(c.Value) Is Nothing Then
                    Worksheets(2).Range("a" & c.Row).Copy Worksheets(3).Range("a" & Worksheets(3).Cells.Rows.Count).End(xlUp)(2)
                    Worksheets(2).Range("c" & c.Row).Copy Worksheets(3).Range("b" & Worksheets(3).Cells.Rows.Count).End(xlUp)(2)
                    Worksheets(2).Range("d" & c.Row).Copy Worksheets(3).Range("c" & Worksheets(3).Cells.Rows.Count).End(xlUp)(2)
              End If
                If IsEmpty(c) Then Exit For
            Next
        Worksheets(3).UsedRange.RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes
   Exit Sub
LogError:
      ErrorMsg = Now & " " & _
          "Error " & Err.Number & " (" & Err.Description & _
          ") in procedure findnew строка " & Erl
      MsgBox ErrorMsg
       With ThisWorkbook
           Shell "cmd /c echo " & ErrorMsg & ">>""" & .Path & "\" & .Name & ".log"""
       End With
       Resume Next

выдает вот такую ошибку

файл с логом - пустой

Последний раз редактировалось okshef, 16-11-2012 в 14:13.


Отправлено: 12:19, 16-11-2012 | #25


Модератор


Moderator


Сообщения: 16855
Благодарности: 3248

Профиль | Сайт | Отправить PM | Цитировать


Вложения
Тип файла: zip FindNew.zip
(289.5 Kb, 26 просмотров)

У меня все выполняется без ошибок

Другие файлы не открыты? Excel точно 2010?

-------
При заполнении сведений о конфигурации компьютера не забудь поставить флажок: отображать - "Да"
-------------------------------------------------------------------------------------------
Ассоциация VirusNet - помощь и обучение борьбе с вирусами. Некоторые вопросы загрузки в моем блоге

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:58, 16-11-2012 | #26


Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


okshef, а возможно ли подтягивать точно так же данные из разных файлов? например не из лист1-лист2 а из файлов filename1 и filename2

Отправлено: 16:41, 01-08-2013 | #27


Модератор


Moderator


Сообщения: 16855
Благодарности: 3248

Профиль | Сайт | Отправить PM | Цитировать


The Off, я сам не делал, попробуйте. Введите переменные, как вы их назвали
Цитата The Off:
filename1 и filename2 »
и пропишите полный путь к файлу
Код: Выделить весь код
Set filename1=x:\dir1\dir2\dir3\file1.xls
Set filename2=x:\dir4\dir5\dir6\file2.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)
Думаю, должно получиться. Только не могу точно сказать, должны ли быть файлы открыты.

Ох и тяжко вспоминать задачки почти годовалой давности

-------
При заполнении сведений о конфигурации компьютера не забудь поставить флажок: отображать - "Да"
-------------------------------------------------------------------------------------------
Ассоциация VirusNet - помощь и обучение борьбе с вирусами. Некоторые вопросы загрузки в моем блоге

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:07, 02-08-2013 | #28


Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


Сделал вот так, он мне скопировал все как нужно, во время "написания" заметил фишку в том, что в одних 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
Код: Выделить весь код

Sub findnew()



     Set filename1 = GetObject("D:\newpens\at06.xls ")

     Set filename2 = GetObject("D:\newpens\at07.xls")
   
            
            For Each c In filename2.Worksheets(1).Columns(3).Cells
                If filename1.Worksheets(1).[c:c].Find(c.Value) Is Nothing Then
                
          filename2.Worksheets(1).Range("a" & c.Row).Copy Worksheets(1).Range("a" & Worksheets(1).Cells.Rows.Count).End(xlUp)(2)
          filename2.Worksheets(1).Range("b" & c.Row).Copy Worksheets(1).Range("b" & Worksheets(1).Cells.Rows.Count).End(xlUp)(2)
          filename2.Worksheets(1).Range("d" & c.Row).Copy Worksheets(1).Range("c" & Worksheets(1).Cells.Rows.Count).End(xlUp)(2)
          
             
                End If
                If IsEmpty(3) Then Exit For
            Next
    '    Worksheets(1).UsedRange.RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlYes
   Exit Sub

       Resume Next
End Sub

Последний раз редактировалось The Off, 02-08-2013 в 12:52.


Отправлено: 09:58, 02-08-2013 | #29


Новый участник


Сообщения: 19
Благодарности: 0

Профиль | Отправить PM | Цитировать


Еще вопрос по инету шарю - пока найти не могу, как сделать так, что бы нужно было "указывать" файл 1 и файл 2 как в "проводнике"

Отправлено: 13:39, 02-08-2013 | #30



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » 2010 - [решено] Excel 2010 фильтр 1 и 2 листа скопировать на новый лист

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2007 - [решено] MS Excel | Как развернуть лист на весь экран ssoll Microsoft Office (Word, Excel, Outlook и т.д.) 3 17-08-2012 18:01
2010 - [решено] Excel - копирование выбранных строк на другой лист linkwy Microsoft Office (Word, Excel, Outlook и т.д.) 3 16-08-2012 21:14
VBA - [решено] Разбор листа Excel по строкам в отдельные файлы Debugger Программирование и базы данных 3 14-03-2012 15:46
2010 - Excel 2010 - фильтр по раскрывающемуся списку flower Microsoft Office (Word, Excel, Outlook и т.д.) 1 01-03-2012 14:44
Разное - Не снимается защита листа в Excel doznet Microsoft Office (Word, Excel, Outlook и т.д.) 3 17-12-2010 23:37




 
Переход