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

Вход

Регистрация

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

 

= Мир MS Excel/Подтянуть данные по столбцу D в нескольо столбцов с листа 3 - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Подтянуть данные по столбцу D в нескольо столбцов с листа 3
Артем_П Дата: Четверг, 01.11.2018, 08:44 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте, уважаемые форумчане!
Прошу помощи в написании макроса, который будет подтягивать данные на лист1 с листа3 по значениям столбца D (подобие ВПР)
Суть задачи:
На листе1 есть данные в столбце D, на листе3 это столбец A, нужно подтянуть в столбцы L,M,N,O данные с листа3 со столбцов I,G,H,F
в столбец L значения столбца I листа3
в столбец M значения столбца G листа3
в столбец N значения столбца H листа3
в столбец O значения столбца F листа3

В интернете нашел подобный код, но к сожалению так и не смог его под себя подстроить.
К сообщению приложен файл: 2376091.xlsb (66.6 Kb)
 
Ответить
СообщениеЗдравствуйте, уважаемые форумчане!
Прошу помощи в написании макроса, который будет подтягивать данные на лист1 с листа3 по значениям столбца D (подобие ВПР)
Суть задачи:
На листе1 есть данные в столбце D, на листе3 это столбец A, нужно подтянуть в столбцы L,M,N,O данные с листа3 со столбцов I,G,H,F
в столбец L значения столбца I листа3
в столбец M значения столбца G листа3
в столбец N значения столбца H листа3
в столбец O значения столбца F листа3

В интернете нашел подобный код, но к сожалению так и не смог его под себя подстроить.

Автор - Артем_П
Дата добавления - 01.11.2018 в 08:44
_Boroda_ Дата: Четверг, 01.11.2018, 10:20 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация: 6505 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
Sub tt()
    With Sheets("Лист3")'Для Лист3
        r01_ = 9'Первая строка
        n1_ = .Cells(.Rows.Count, 1).End(3).Row - r01_ - 1'последняя строка минус нач. строка +1 = кол-во строк
        ar1 = .Cells(r01_, 1).Resize(n1_, 9)'в массив все с ячейки А9 на n1 вниз и на 9 вправо
    End With
    Set slov = CreateObject("Scripting.Dictionary")'slov- это словарь
    With slov'работаем с ним
        For i = 1 To n1_'цикл по строкам массива ar1
            .Item(ar1(i, 1)) = i'в словаре ключ = значение из столбца 1 масссива, элемент = порядковому номеру
        Next i
        With Sheets("Лист1")'для Лист1
            r0_ = 7'первая строка
            n_ = .Cells(.Rows.Count, 4).End(3).Row - r0_ + 1'кол-во строк
            ar0 = .Cells(r0_, 4).Resize(n_)'значения первого столбца суем в массив
        End With
        Dim ar'объявляем переменную
        ReDim ar(1 To n_, 1 To 4)'переобъявляем как массив n строк и 4 столбца
        For i = 1 To n_'цикл по строкам
            If .exists(ar0(i, 1)) Then'если значение из первого столбца ar0 есть в словаре
                ri_ = .Item(ar0(i, 1))'определяем порядковый номер этого значения в массиве ar1 (это элемент сообтветствующего ключа в словаре)
                ar(i, 1) = ar1(ri_, 9)'заполняем массив ar нужными значениями из массива ar1
                ar(i, 2) = ar1(ri_, 7)'
                ar(i, 3) = ar1(ri_, 8)'
                ar(i, 4) = ar1(ri_, 6)'
            End If
        Next i
    End With
    Sheets("Лист1").Cells(r0_, 12).Resize(n_, 4) = ar'выгружаем массив ar на лист
End Sub
[/vba]

* Дописал комментарии
К сообщению приложен файл: 2376091_1.xlsb (57.2 Kb)


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


Сообщение отредактировал _Boroda_ - Пятница, 02.11.2018, 10:06
 
Ответить
СообщениеТак нужно?
[vba]
Код
Sub tt()
    With Sheets("Лист3")'Для Лист3
        r01_ = 9'Первая строка
        n1_ = .Cells(.Rows.Count, 1).End(3).Row - r01_ - 1'последняя строка минус нач. строка +1 = кол-во строк
        ar1 = .Cells(r01_, 1).Resize(n1_, 9)'в массив все с ячейки А9 на n1 вниз и на 9 вправо
    End With
    Set slov = CreateObject("Scripting.Dictionary")'slov- это словарь
    With slov'работаем с ним
        For i = 1 To n1_'цикл по строкам массива ar1
            .Item(ar1(i, 1)) = i'в словаре ключ = значение из столбца 1 масссива, элемент = порядковому номеру
        Next i
        With Sheets("Лист1")'для Лист1
            r0_ = 7'первая строка
            n_ = .Cells(.Rows.Count, 4).End(3).Row - r0_ + 1'кол-во строк
            ar0 = .Cells(r0_, 4).Resize(n_)'значения первого столбца суем в массив
        End With
        Dim ar'объявляем переменную
        ReDim ar(1 To n_, 1 To 4)'переобъявляем как массив n строк и 4 столбца
        For i = 1 To n_'цикл по строкам
            If .exists(ar0(i, 1)) Then'если значение из первого столбца ar0 есть в словаре
                ri_ = .Item(ar0(i, 1))'определяем порядковый номер этого значения в массиве ar1 (это элемент сообтветствующего ключа в словаре)
                ar(i, 1) = ar1(ri_, 9)'заполняем массив ar нужными значениями из массива ar1
                ar(i, 2) = ar1(ri_, 7)'
                ar(i, 3) = ar1(ri_, 8)'
                ar(i, 4) = ar1(ri_, 6)'
            End If
        Next i
    End With
    Sheets("Лист1").Cells(r0_, 12).Resize(n_, 4) = ar'выгружаем массив ar на лист
End Sub
[/vba]

* Дописал комментарии

Автор - _Boroda_
Дата добавления - 01.11.2018 в 10:20
Артем_П Дата: Четверг, 01.11.2018, 10:42 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Идеально!
Спасибо вам большое, Борода!
Буду разбираться что тут к чему чтобы в дальнейшем тоже так уметь.
 
Ответить
СообщениеИдеально!
Спасибо вам большое, Борода!
Буду разбираться что тут к чему чтобы в дальнейшем тоже так уметь.

Автор - Артем_П
Дата добавления - 01.11.2018 в 10:42
Артем_П Дата: Пятница, 02.11.2018, 07:05 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Уважаемый, _Boroda_, если у вас есть время, проставьте пожалуйста комментарии к вашему коду. Впереди выходные хочу посидеть поразбираться.
 
Ответить
СообщениеУважаемый, _Boroda_, если у вас есть время, проставьте пожалуйста комментарии к вашему коду. Впереди выходные хочу посидеть поразбираться.

Автор - Артем_П
Дата добавления - 02.11.2018 в 07:05
_Boroda_ Дата: Пятница, 02.11.2018, 10:07 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация: 6505 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Цитата Артем_П, 02.11.2018 в 07:05, в сообщении № 4 ()
_Boroda_, если у вас есть время
Вы про что? Откуда у меня время? :D

Дописал комментарии в коде выше


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Цитата Артем_П, 02.11.2018 в 07:05, в сообщении № 4 ()
_Boroda_, если у вас есть время
Вы про что? Откуда у меня время? :D

Дописал комментарии в коде выше

Автор - _Boroda_
Дата добавления - 02.11.2018 в 10:07
Артем_П Дата: Понедельник, 05.11.2018, 04:06 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Спасибо Вам огромное.
 
Ответить
СообщениеСпасибо Вам огромное.

Автор - Артем_П
Дата добавления - 05.11.2018 в 04:06
  • Страница 1 из 1
  • 1
Поиск:

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