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

Вход

Регистрация

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

 

= Мир MS Excel/Подтянуть данные из массива по 2м условиям - Мир MS Excel

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

Excel 2016
Товарищи, добрый день. Очень нужна Ваша помощь.
есть файл в котором большое кол-во строк, порядка 200 000, на первом листе располагаются ФИО , дата и кол-во товара.
Необходимо на 2ой лист, по условия совпадения даты и ФИО в столбец КОЛ-Во подтянуть данные с первого листа.
Моих познаний хватает только чтобы выполнить условие по ФИО, он подтягивает только к ФИО кол-во, как зря.
Помогите пожалуйста добавить условие чтобы он проверял дату.
К сообщению приложен файл: 123456.xlsm(19.8 Kb)


Сообщение отредактировал Vladimir32 - Понедельник, 28.01.2019, 16:01
 
Ответить
СообщениеТоварищи, добрый день. Очень нужна Ваша помощь.
есть файл в котором большое кол-во строк, порядка 200 000, на первом листе располагаются ФИО , дата и кол-во товара.
Необходимо на 2ой лист, по условия совпадения даты и ФИО в столбец КОЛ-Во подтянуть данные с первого листа.
Моих познаний хватает только чтобы выполнить условие по ФИО, он подтягивает только к ФИО кол-во, как зря.
Помогите пожалуйста добавить условие чтобы он проверял дату.

Автор - Vladimir32
Дата добавления - 28.01.2019 в 16:01
sboy Дата: Понедельник, 28.01.2019, 16:57 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 2368
Репутация: 671 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
вариант формулой массива
Код
=ИНДЕКС(Лист1!$C$2:$C$48;ПОИСКПОЗ(A2&B2;Лист1!$A$2:$A$48&Лист1!$B$2:$B$48;))

Ошибки можно убрать, добавив ЕСЛИОШИБКА()
К сообщению приложен файл: 1452336.xlsm(20.7 Kb)
 
Ответить
СообщениеДобрый день.
вариант формулой массива
Код
=ИНДЕКС(Лист1!$C$2:$C$48;ПОИСКПОЗ(A2&B2;Лист1!$A$2:$A$48&Лист1!$B$2:$B$48;))

Ошибки можно убрать, добавив ЕСЛИОШИБКА()

Автор - sboy
Дата добавления - 28.01.2019 в 16:57
Vladimir32 Дата: Понедельник, 28.01.2019, 17:30 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
sboy, дело в том, что ранее эта формула и использовалась для этого, но файл иногда увеличивается до 900 000 строк, и начинает очень долго грузиться и обновляться, именно с этой целью и возникла потребность в макросе(
 
Ответить
Сообщениеsboy, дело в том, что ранее эта формула и использовалась для этого, но файл иногда увеличивается до 900 000 строк, и начинает очень долго грузиться и обновляться, именно с этой целью и возникла потребность в макросе(

Автор - Vladimir32
Дата добавления - 28.01.2019 в 17:30
RAN Дата: Вторник, 29.01.2019, 01:25 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4913
Репутация: 981 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub мяу()
    Dim ar, i&
    ar = Sheets("Лист1").Range("A1").CurrentRegion.Value
    With CreateObject("Scripting.Dictionary")
        For i = 1 To UBound(ar)
            .Item(ar(i, 1) & "|" & ar(i, 2)) = ar(i, 3)
        Next
        ar = Sheets("Лист2").Range("A1").CurrentRegion.Value
        For i = 1 To UBound(ar)
            If .exists(ar(i, 1) & "|" & ar(i, 2)) Then ar(i, 5) = .Item(ar(i, 1) & "|" & ar(i, 2))
        Next
        Sheets("Лист2").Range("A1").Resize(UBound(ar), UBound(ar, 2)).Value = ar
    End With
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Sub мяу()
    Dim ar, i&
    ar = Sheets("Лист1").Range("A1").CurrentRegion.Value
    With CreateObject("Scripting.Dictionary")
        For i = 1 To UBound(ar)
            .Item(ar(i, 1) & "|" & ar(i, 2)) = ar(i, 3)
        Next
        ar = Sheets("Лист2").Range("A1").CurrentRegion.Value
        For i = 1 To UBound(ar)
            If .exists(ar(i, 1) & "|" & ar(i, 2)) Then ar(i, 5) = .Item(ar(i, 1) & "|" & ar(i, 2))
        Next
        Sheets("Лист2").Range("A1").Resize(UBound(ar), UBound(ar, 2)).Value = ar
    End With
End Sub
[/vba]

Автор - RAN
Дата добавления - 29.01.2019 в 01:25
Vladimir32 Дата: Вторник, 29.01.2019, 20:36 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
RAN, Огромнейшее спасибо, это то - что нужно!)
 
Ответить
СообщениеRAN, Огромнейшее спасибо, это то - что нужно!)

Автор - Vladimir32
Дата добавления - 29.01.2019 в 20:36
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Подтянуть данные из массива по 2м условиям (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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