Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сравнение двух столбцов на двух листах - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сравнение двух столбцов на двух листах (Макросы/Sub)
Сравнение двух столбцов на двух листах
Raskat Дата: Понедельник, 08.04.2019, 15:37 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Доброго дня форумчанам! :)

Такая дилемма:
Есть два листа, с набором данных. Необходимо на Лист1, при условии совпадения двух столбцов, притянуть в третий столбец данные с Листа 2.
Сейчас задача решается формулами через массив, но на больших базах считает экселина чудовищно долго.
Как бы это дело оптимизировать....

Попробовал написать скрипт через find, но он у меня во-первых не работает (я так подозреваю что из-за куска fcell.Row), во-вторых он ищет только до первого совпадения индекса, а надо бы что бы при несовпадении второго условия он продолжал поиск.

[vba]
Код
Sub Get_()
r = Cells(Rows.Count, 1).End(xlUp).Row
For i = r To 2 Step -1
'Находим индекс на листе-справочнике (Лист2)
fcell = Worksheets("Лист2").Range("B:B").Find(Cells(i, 2))
'Если ФИО по индексу так же совпадает - копируем нужные данные с листа 2
If Worksheets("Лист1").Cells(i, 1) = Worksheets("Лист2").Cells(fcell.Row, 1) Then
    Worksheets("Лист2").Cells(fcell.Row, 1).Copy Worksheets("Лист1").Cells(i, 3)
End If

Next i

End Sub
[/vba]
 
Ответить
СообщениеДоброго дня форумчанам! :)

Такая дилемма:
Есть два листа, с набором данных. Необходимо на Лист1, при условии совпадения двух столбцов, притянуть в третий столбец данные с Листа 2.
Сейчас задача решается формулами через массив, но на больших базах считает экселина чудовищно долго.
Как бы это дело оптимизировать....

Попробовал написать скрипт через find, но он у меня во-первых не работает (я так подозреваю что из-за куска fcell.Row), во-вторых он ищет только до первого совпадения индекса, а надо бы что бы при несовпадении второго условия он продолжал поиск.

[vba]
Код
Sub Get_()
r = Cells(Rows.Count, 1).End(xlUp).Row
For i = r To 2 Step -1
'Находим индекс на листе-справочнике (Лист2)
fcell = Worksheets("Лист2").Range("B:B").Find(Cells(i, 2))
'Если ФИО по индексу так же совпадает - копируем нужные данные с листа 2
If Worksheets("Лист1").Cells(i, 1) = Worksheets("Лист2").Cells(fcell.Row, 1) Then
    Worksheets("Лист2").Cells(fcell.Row, 1).Copy Worksheets("Лист1").Cells(i, 3)
End If

Next i

End Sub
[/vba]

Автор - Raskat
Дата добавления - 08.04.2019 в 15:37
skais Дата: Понедельник, 08.04.2019, 15:47 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 173
Репутация: 23 ±
Замечаний: 60% ±

Excel 2010
Raskat приложите файл пример. Рекомендую использование массивов в VBA - почитайте.
 
Ответить
СообщениеRaskat приложите файл пример. Рекомендую использование массивов в VBA - почитайте.

Автор - skais
Дата добавления - 08.04.2019 в 15:47
Raskat Дата: Понедельник, 08.04.2019, 16:49 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
skais, Спасибо, попробую.

Пока придумал костыль с формулами))
Вопрос больше не актуален.
 
Ответить
Сообщениеskais, Спасибо, попробую.

Пока придумал костыль с формулами))
Вопрос больше не актуален.

Автор - Raskat
Дата добавления - 08.04.2019 в 16:49
_Boroda_ Дата: Понедельник, 08.04.2019, 16:57 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15195
Репутация: 5972 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Ну и зря. Формулами все равно задумчиво будет. Или с допстолбцом
Файл дадите - поможем.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНу и зря. Формулами все равно задумчиво будет. Или с допстолбцом
Файл дадите - поможем.

Автор - _Boroda_
Дата добавления - 08.04.2019 в 16:57
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сравнение двух столбцов на двух листах (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2019 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!