Перенести данные из одной таблицы в другую
mikaelw
Дата: Воскресенье, 19.12.2021, 23:31 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация:
1
±
Замечаний:
20% ±
Excel 2010, 2013, 2016
Наверное задачка уже решалась. Есть 2 таблицы. Базе и Итог. В таблице Итого есть 2 столбца(УПД_ПД_№; УПД_ПД_Дата), которые нужно перенести значения перенести в таблицу Базе. По сути функция ВПН по 3-м условиям(Дата ТН; Проект; Наименование товара), но нужно динамично это делать. Можно это сделать стандартными функциями или макросом...
Наверное задачка уже решалась. Есть 2 таблицы. Базе и Итог. В таблице Итого есть 2 столбца(УПД_ПД_№; УПД_ПД_Дата), которые нужно перенести значения перенести в таблицу Базе. По сути функция ВПН по 3-м условиям(Дата ТН; Проект; Наименование товара), но нужно динамично это делать. Можно это сделать стандартными функциями или макросом... mikaelw
Ответить
Сообщение Наверное задачка уже решалась. Есть 2 таблицы. Базе и Итог. В таблице Итого есть 2 столбца(УПД_ПД_№; УПД_ПД_Дата), которые нужно перенести значения перенести в таблицу Базе. По сути функция ВПН по 3-м условиям(Дата ТН; Проект; Наименование товара), но нужно динамично это делать. Можно это сделать стандартными функциями или макросом... Автор - mikaelw Дата добавления - 19.12.2021 в 23:31
Pelena
Дата: Понедельник, 20.12.2021, 00:08 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация:
4555
±
Замечаний:
±
Excel 365 & Mac Excel
И Вам здравствуйте.Код
=ЕСЛИОШИБКА(ПРОСМОТР(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);"")
Pelena
"Черт возьми, Холмс! Но как??!!" Ю-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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация:
1
±
Замечаний:
20% ±
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
Ответить
Сообщение =ЕСЛИОШИБКА(ПРОСМОТР(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
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация:
129
±
Замечаний:
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]
Что именно Вы имеете в виду, может 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
Ответить
Сообщение Что именно Вы имеете в виду, может 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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация:
1
±
Замечаний:
20% ±
Excel 2010, 2013, 2016
КЛАСС Я о таком подходе даже не думал. Думал макросом расставить...
КЛАСС Я о таком подходе даже не думал. Думал макросом расставить... mikaelw
Ответить
Сообщение КЛАСС Я о таком подходе даже не думал. Думал макросом расставить... Автор - mikaelw Дата добавления - 20.12.2021 в 09:56
msi2102
Дата: Понедельник, 20.12.2021, 09:59 |
Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация:
129
±
Замечаний:
0% ±
Excel 2007
Можно это сделать стандартными функциями
А чем Вас не устроило формульное решение из второго сообщения
Можно это сделать стандартными функциями
А чем Вас не устроило формульное решение из второго сообщенияmsi2102
Ответить
Сообщение Можно это сделать стандартными функциями
А чем Вас не устроило формульное решение из второго сообщенияАвтор - msi2102 Дата добавления - 20.12.2021 в 09:59
mikaelw
Дата: Понедельник, 20.12.2021, 10:08 |
Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 179
Репутация:
1
±
Замечаний:
20% ±
Excel 2010, 2013, 2016
А чем Вас не устроило формульное решение из второго сообщения
Нужно 1 раз в таблицу базы данных внести и больше, чтоб они на лету не менялись.
А чем Вас не устроило формульное решение из второго сообщения
Нужно 1 раз в таблицу базы данных внести и больше, чтоб они на лету не менялись.mikaelw
Ответить
Сообщение А чем Вас не устроило формульное решение из второго сообщения
Нужно 1 раз в таблицу базы данных внести и больше, чтоб они на лету не менялись.Автор - mikaelw Дата добавления - 20.12.2021 в 10:08
msi2102
Дата: Понедельник, 20.12.2021, 10:41 |
Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация:
129
±
Замечаний:
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]
Думал макросом расставить
Макрос, если ещё актуально [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
Сообщение отредактировал 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