Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Поиск одинаковых значений на разных листах по разным столбцам и их копирование на новый лист
 
Добрый день!
Просмотрел форум, но к сожалению не смог найти нужного решения. Помогите с написанием макроса. Задача: есть файл в котором имеется три листа . Количество строк в каждом листе разное и может быть несколько тысяч. Необходимо выполнить поиск на всех трех листах одинаковых значений по определенным столбцам, конкретнее - найти одинаковые Фамилию, Имя, Отчество и дату рождения. Все найденные одинаковые значения скопировать на новый лист:
1) либо полностью строку в которой содержится искомое значение
2) либо просто столбец "А" (с номером договора) + ФИО +ДР.
Образец в файле.
 
Цитата
planetaexcel26 написал:
Помогите с написанием макроса
В чём конкретно заключается помощь? Может следовало бы сформулировать иначе - "напишите мне макрос"?
 
Здравствуйте. А собрать всё на один лист и выделить фильтром повторяющиеся, не вариант? А потом эти данные копируйте куда нужно. Или обязательно нужен макрос?
 
Нужен макрос. Так как им будут пользоваться много людей, которые в Excel не очень хорошо разбираются. А так нажмут на одну кнопку и все готово!  
 
Цитата
Юрий М написал:
В чём конкретно заключается помощь? Может следовало бы сформулировать иначе - "напишите мне макрос"?
А разве "Помогите с написанием макроса" и "Напишите мне макрос" ни одно и тоже ?
 
Цитата
planetaexcel26 написал:
одно и тоже
Слов нет, одни буквы...
 
Не помню где, но нашел что-то наподобие
Код
Sub Dublicate()
    Dim a(), i&, t$, ind&, x&
     
    Application.ScreenUpdating = False
    With CreateObject("scripting.dictionary")
        a = Sheets(1).UsedRange.Columns(14).Resize(, 6).Value
        For i = 2 To UBound(a)
            t = a(i, 1) & "|" & a(i, 2) & "|" & a(i, 3) & "|" & a(i, 4) & "|" & a(i, 5) & "|" & a(i, 6)
            .Item(t) = 0&
        Next
 
        a = Sheets(2).UsedRange.Columns(14).Resize(, 6).Value
        ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
 
        For i = 2 To UBound(a)
            t = a(i, 1) & "|" & a(i, 2) & "|" & a(i, 3) & "|" & a(i, 4) & "|" & a(i, 5) & "|" & a(i, 6)
            If .exists(t) Then
                ind = ind + 1: For x = 1 To UBound(a, 2): b(ind, x) = a(i, x): Next
            End If
        Next
    End With
 
    If ind > 0 Then Sheets.Add.[a1].Resize(ind, UBound(b, 2)) = b
    Application.ScreenUpdating = True
    ActiveSheet.Name = "Dublicate"
 
End Sub

Данный макрос сверяет данные на двух листах и копирует одинаковые значения на новый лист. Помогите его доработать. Нужно:
1) сделать поиск по трем листам
2) поиск осуществлять по столбцам: на листах "1 и 2" - N, P ,Q, R    на листе "3" - H, I, J, K
3) все найденные одинаковые значения копировать на новый лист.
Изменено: Андрей_26 - 24 Дек 2018 17:39:00
 
Цитата
planetaexcel26 написал:
А разве "Помогите с написанием макроса" и "Напишите мне макрос" ни одно и тоже ?
А вы полагает, что нет разницы?
Сравните: Вы купили в магазине телевизор.
1. Просите кого-нибудь помочь донести его до автомобиля. Взяли вдвоём - и несёте.
2. Просите кого-нибудь донести телевизор до автомобиля. Человек взял (один) и несёт.
Есть разница?
Ну почему Вы (и многие другие) стесняетесь прямо написать - напишите?
 
Цитата
Юрий М написал:
почему Вы (и многие другие) стесняетесь прямо написать - напишите?
напишите - раздел Работа,  помогите - общий.
 
Цитата
Михаил С. написал:
напишите - раздел Работа,  помогите - общий.
Я понимаю что вы здесь ради заработка, но пока что подожду, может найдутся спецы, а там может я и сам отблагодарю....
Изменено: Андрей_26 - 24 Дек 2018 17:23:55
 
Цитата
Андрей_26 написал: Я понимаю что вы здесь ради заработка
Не понимаете...
Здесь помогают, но эта ветка для КОНКРЕТНЫХ вопросов, помощь тем, кто не может разобраться.
Правила форума:
Цитата
  2.6. Один вопрос - одна тема. Не следует в открываемой теме обозначать и задавать сразу несколько вопросов.
Это Вы понимаете?
 
Удалите тему. Вопрос перенесу в платный раздел.
 
Цитата
Андрей_26 написал:
Я понимаю что вы здесь ради заработка
В чей адрес такая конкретика?
 
Цитата
planetaexcel26 написал:
А разве "Помогите с написанием макроса" и "Напишите мне макрос" ни одно и тоже ?
Да есть и очень большая. Помогите, это когда начал делать и что-то не получается, а напишите за меня - это и означает сделайте за меня.
Цитата
Андрей_26 написал:
Я понимаю что вы здесь ради заработка,
не правильно понимаете, хотя многим лишняя копейка не будет, но ведь и вы пишите что
Цитата
planetaexcel26 написал:
Так как им будут пользоваться много людей
значит это для работы и оптимизации, почему эта оптимизация должна быть бесплатной?
А уж это
Цитата
Андрей_26 написал:
а там может я и сам отблагодарю....
рассмешило.
 
Цитата
Андрей_26 написал:
Я понимаю что вы здесь ради заработка
Вы  сильно ошибаетесь, Вы пытаетесь оценить местное сообщество со своей колокольни
лично я получаю удовольствие:
- от решения задач
- от реакции тех, кому я решил задачи
- от сдержанных комментариев коллег по цеху (от местных лабухов)
Вас перенесут, не сомневайтесь

тысячи людей приходят сюда с неразрешимыми (с их точки зрения) проблемами и уходят с готовыми решениями
ответьте себе на простой вопрос: Вам нужен конфликт с администрацией или решение?
Вы можете получить и то и то, в зависимости от позиции, которую займете, Ваша судьба в Ваших руках
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
Вас перенесут, не сомневайтесь
Игорь, так автор и не просит переносить )  Просит удалить эту тему - наверное, понял разницу между "помогите" и "сделайте".
 
А вот эта фраза
Цитата
Андрей_26 написал:
Я понимаю что вы здесь ради заработка
ничего, кроме неприятного осадка, не оставит.
 
Юра, это работа, на работе - бывает всякое, главное справляться, знаешь как в старом Советском анекдоте:
Тролейбус. Пионер
-- дяденька, Вы выходите на следующей остановке?
Дяденька:
-- выхожу я на следующей остановке, не выхожу.... какая это в сущности мелочь! главное, чтобы ты, мальчик, хорошо учился!

я к тому, что пользователи разные, а сайт-то хороший))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
:D  
 
Вставлю свои 5 копеек, если разрешите.
Я как новичок, хочу обратиться к новичкам.

Умейте правильно формулировать вопросы. Согласен, что не всегда получается. Но если не получилось, не надо дерзить.
Воспринимайте претензии знатоков правильно. Им больше делать нечего, чем тут сидеть и помогать нам.

Большое спасибо всем за отзывчивость, за помощь Вашу. К примеру, я 2-3 раза обращался. Чуток не догонял. Мог бы сидеть целыми днями в поисках решения.
А тут на тебе, за не длительное время помогли. И время сэкономил, и узнал на будущее.

PS  Не скупитесь на благодарности. Если помогли, поблагодарите от души. Ведь многие знатоки "за спасибо" и помогают.
От помощи стало приятно Вам? Сделайте приятно помощникам, хотя бы словом благодарности.
 
Off
Цитата
zlipse написал:
Не скупитесь на благодарности
особенно в разделе Работа. Помните, вы  благодарите не только за опыт и знания, но и за затраченное электричество :-)
Изменено: БМВ - 27 Дек 2018 07:53:44
Страницы: 1
Читают тему (гостей: 1)
Наверх