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

Вход

Регистрация

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

 

= Мир MS Excel/Перенести данные из одной таблицы в другую - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перенести данные из одной таблицы в другую (Макросы/Sub)
Перенести данные из одной таблицы в другую
mikaelw Дата: Воскресенье, 19.12.2021, 23:31 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 137
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010, 2013, 2016
Наверное задачка уже решалась.

Есть 2 таблицы.
Базе и Итог.

В таблице Итого есть 2 столбца(УПД_ПД_№; УПД_ПД_Дата), которые нужно перенести значения перенести в таблицу Базе.

По сути функция ВПН по 3-м условиям(Дата ТН; Проект; Наименование товара), но нужно динамично это делать.

Можно это сделать стандартными функциями или макросом...
К сообщению приложен файл: 0682582.xlsx(141.7 Kb)
 
Ответить
СообщениеНаверное задачка уже решалась.

Есть 2 таблицы.
Базе и Итог.

В таблице Итого есть 2 столбца(УПД_ПД_№; УПД_ПД_Дата), которые нужно перенести значения перенести в таблицу Базе.

По сути функция ВПН по 3-м условиям(Дата ТН; Проект; Наименование товара), но нужно динамично это делать.

Можно это сделать стандартными функциями или макросом...

Автор - mikaelw
Дата добавления - 19.12.2021 в 23:31
Pelena Дата: Понедельник, 20.12.2021, 00:08 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 18555
Репутация: 4202 ±
Замечаний: ±

Excel 2016 & Mac Excel
И Вам здравствуйте.
Код
=ЕСЛИОШИБКА(ПРОСМОТР(0;-1/(Итог!$A$2:$A$29=$A2)/(Итог!$B$2:$B$29=$H2)/(Итог!$C$2:$C$29=$C2);Итог!D$2:D$29);"")
К сообщению приложен файл: 5264526.xlsx(214.7 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеИ Вам здравствуйте.
Код
=ЕСЛИОШИБКА(ПРОСМОТР(0;-1/(Итог!$A$2:$A$29=$A2)/(Итог!$B$2:$B$29=$H2)/(Итог!$C$2:$C$29=$C2);Итог!D$2:D$29);"")

Автор - Pelena
Дата добавления - 20.12.2021 в 00:08
mikaelw Дата: Понедельник, 20.12.2021, 01:01 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 137
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010, 2013, 2016
=ЕСЛИОШИБКА(ПРОСМОТР(0;-1/(Итог!$A$2:$A$29=$A2)/(Итог!$B$2:$B$29=$H2)/(Итог!$C$2:$C$29=$C2);Итог!D$2:D$29);"")


Не ФОРМУЛОЙ, а данные?
 
Ответить
Сообщение
=ЕСЛИОШИБКА(ПРОСМОТР(0;-1/(Итог!$A$2:$A$29=$A2)/(Итог!$B$2:$B$29=$H2)/(Итог!$C$2:$C$29=$C2);Итог!D$2:D$29);"")


Не ФОРМУЛОЙ, а данные?

Автор - mikaelw
Дата добавления - 20.12.2021 в 01:01
msi2102 Дата: Понедельник, 20.12.2021, 09:49 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 201
Репутация: 79 ±
Замечаний: 0% ±

Excel 2007
Не ФОРМУЛОЙ, а данные?

Что именно Вы имеете в виду, может PQ подойдет?
[vba]
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    Источник1 = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    Объединение = Table.NestedJoin(Источник,{"Дата ТН", "Наименование товара", "Проект"},Источник1,{"Дата ТН", "Наименование товара", "Проект"},"Таблица2",JoinKind.LeftOuter),
    Развертывание = Table.ExpandTableColumn(Объединение, "Таблица2", {"УПД_ПД_№", "УПД_ПД_Дата"}, {"УПД_ПД_№", "УПД_ПД_Дата"}),
    Удалить = Table.SelectColumns(Развертывание,{"УПД_ПД_№", "УПД_ПД_Дата"}),
    Тип = Table.TransformColumnTypes(Удалить,{{"УПД_ПД_Дата", type date}})
in
    Тип
[/vba]
К сообщению приложен файл: 5348583.xlsx(146.1 Kb)
 
Ответить
Сообщение
Не ФОРМУЛОЙ, а данные?

Что именно Вы имеете в виду, может PQ подойдет?
[vba]
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    Источник1 = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    Объединение = Table.NestedJoin(Источник,{"Дата ТН", "Наименование товара", "Проект"},Источник1,{"Дата ТН", "Наименование товара", "Проект"},"Таблица2",JoinKind.LeftOuter),
    Развертывание = Table.ExpandTableColumn(Объединение, "Таблица2", {"УПД_ПД_№", "УПД_ПД_Дата"}, {"УПД_ПД_№", "УПД_ПД_Дата"}),
    Удалить = Table.SelectColumns(Развертывание,{"УПД_ПД_№", "УПД_ПД_Дата"}),
    Тип = Table.TransformColumnTypes(Удалить,{{"УПД_ПД_Дата", type date}})
in
    Тип
[/vba]

Автор - msi2102
Дата добавления - 20.12.2021 в 09:49
mikaelw Дата: Понедельник, 20.12.2021, 09:56 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 137
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010, 2013, 2016
КЛАСС
Я о таком подходе даже не думал.

Думал макросом расставить...
 
Ответить
СообщениеКЛАСС
Я о таком подходе даже не думал.

Думал макросом расставить...

Автор - mikaelw
Дата добавления - 20.12.2021 в 09:56
msi2102 Дата: Понедельник, 20.12.2021, 09:59 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 201
Репутация: 79 ±
Замечаний: 0% ±

Excel 2007
Можно это сделать стандартными функциями

А чем Вас не устроило формульное решение из второго сообщения
 
Ответить
Сообщение
Можно это сделать стандартными функциями

А чем Вас не устроило формульное решение из второго сообщения

Автор - msi2102
Дата добавления - 20.12.2021 в 09:59
mikaelw Дата: Понедельник, 20.12.2021, 10:08 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 137
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010, 2013, 2016
А чем Вас не устроило формульное решение из второго сообщения


Нужно 1 раз в таблицу базы данных внести и больше, чтоб они на лету не менялись.
 
Ответить
Сообщение
А чем Вас не устроило формульное решение из второго сообщения


Нужно 1 раз в таблицу базы данных внести и больше, чтоб они на лету не менялись.

Автор - mikaelw
Дата добавления - 20.12.2021 в 10:08
msi2102 Дата: Понедельник, 20.12.2021, 10:41 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 201
Репутация: 79 ±
Замечаний: 0% ±

Excel 2007
Думал макросом расставить

Макрос, если ещё актуально

[vba]
Код
Sub Макрос2()
Dim lr As Long, arr1 As Variant, arr2 As Variant, arr3 As Variant
lr = Worksheets("Итог").Cells(Rows.Count, 1).End(xlUp).Row
arr1 = Worksheets("Итог").Range("A2:E" & lr).Value
lr = Worksheets("Базе").Cells(Rows.Count, 1).End(xlUp).Row
arr2 = Worksheets("Базе").Range("A2:H" & lr).Value
ReDim arr3(LBound(arr2) To UBound(arr2), 1 To 2)
For n = LBound(arr2) To UBound(arr3)
    For m = LBound(arr1) To UBound(arr1)
        If arr2(n, 1) = arr1(m, 1) And arr2(n, 3) = arr1(m, 3) And arr2(n, 8) = arr1(m, 2) Then
            arr3(n, 1) = arr1(m, 4): arr3(n, 2) = arr1(m, 5): Exit For
        End If
    Next m
Next n
Worksheets("Базе").Range("L2:M" & lr) = arr3
End Sub
[/vba]
К сообщению приложен файл: 5348583.xlsm(156.7 Kb)


Сообщение отредактировал msi2102 - Понедельник, 20.12.2021, 10:55
 
Ответить
Сообщение
Думал макросом расставить

Макрос, если ещё актуально

[vba]
Код
Sub Макрос2()
Dim lr As Long, arr1 As Variant, arr2 As Variant, arr3 As Variant
lr = Worksheets("Итог").Cells(Rows.Count, 1).End(xlUp).Row
arr1 = Worksheets("Итог").Range("A2:E" & lr).Value
lr = Worksheets("Базе").Cells(Rows.Count, 1).End(xlUp).Row
arr2 = Worksheets("Базе").Range("A2:H" & lr).Value
ReDim arr3(LBound(arr2) To UBound(arr2), 1 To 2)
For n = LBound(arr2) To UBound(arr3)
    For m = LBound(arr1) To UBound(arr1)
        If arr2(n, 1) = arr1(m, 1) And arr2(n, 3) = arr1(m, 3) And arr2(n, 8) = arr1(m, 2) Then
            arr3(n, 1) = arr1(m, 4): arr3(n, 2) = arr1(m, 5): Exit For
        End If
    Next m
Next n
Worksheets("Базе").Range("L2:M" & lr) = arr3
End Sub
[/vba]

Автор - msi2102
Дата добавления - 20.12.2021 в 10:41
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Перенести данные из одной таблицы в другую (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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