Во вкладке "Аварии по температуре" находятся аварии к которым необходимо подставить аварии по питанию из вкладки "Аварии по питанию" где совпадают даты. Подробнее в самой таблице. Если в этот день когда произошла авария по температуре имеется несколько аварий по питанию указать каждую в отдельном столбце и время каждого инцидента. Буду благодарен.
Во вкладке "Аварии по температуре" находятся аварии к которым необходимо подставить аварии по питанию из вкладки "Аварии по питанию" где совпадают даты. Подробнее в самой таблице. Если в этот день когда произошла авария по температуре имеется несколько аварий по питанию указать каждую в отдельном столбце и время каждого инцидента. Буду благодарен.sharip199605
=ТРАНСП(ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(ОБЪЕДИНИТЬ(";";1;ФИЛЬТР(ФИЛЬТР('Аварии по питанию'!$B$2:$E$46;'Аварии по питанию'!$D$2:$D$46=D2);{1;0;0;1}));";";"</s><s>")&"</s></t>";"//s"))
[/vba]
Если офис 2019 и выше [vba]
Код
=ТРАНСП(ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(ОБЪЕДИНИТЬ(";";1;ФИЛЬТР(ФИЛЬТР('Аварии по питанию'!$B$2:$E$46;'Аварии по питанию'!$D$2:$D$46=D2);{1;0;0;1}));";";"</s><s>")&"</s></t>";"//s"))
let Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], Источник1 = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content], Объединение = Table.Buffer(Table.NestedJoin(Источник, {"Дата события"}, Источник1, {"Дата события"}, "Таблица2", JoinKind.LeftOuter)), k = List.Max(List.Accumulate(Объединение[Таблица2], {}, (state, current) => state & {Table.RowCount(current)} )), l = List.Buffer(List.Transform(List.Zip({List.Sort(List.Repeat({1..k},2)), List.Repeat({"_№ инцидента","_Время события"},k)}), each Text.From( _{0}) & _{1})), Трансф = Table.TransformColumns( Объединение, {{ "Таблица2", (t) => [ a = Table.SelectColumns(t,{"№ инцидента","Время события"}), s = if List.Count(List.Combine(Table.ToRows(a))) < k*2 then List.Combine(Table.ToRows(a)) & List.Repeat({null}, k*2 - List.Count(List.Combine(Table.ToRows(a)))) else List.Combine(Table.ToRows(a)), r = Table.FromRecords({Record.FromList(s,l)}) ][r] }}), Развертывание = Table.ExpandTableColumn(Трансф, "Таблица2", l, l), Результат = Table.TransformColumnTypes(Развертывание, List.Transform(Table.ColumnNames(Развертывание), each if Text.Contains(_, "Время") then {_, type time} else if Text.Contains(_, "Дата") then {_, type date} else {_, type text})) in Результат
[/vba]
Power Query Вам в помощь [vba]
Код
let Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], Источник1 = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content], Объединение = Table.Buffer(Table.NestedJoin(Источник, {"Дата события"}, Источник1, {"Дата события"}, "Таблица2", JoinKind.LeftOuter)), k = List.Max(List.Accumulate(Объединение[Таблица2], {}, (state, current) => state & {Table.RowCount(current)} )), l = List.Buffer(List.Transform(List.Zip({List.Sort(List.Repeat({1..k},2)), List.Repeat({"_№ инцидента","_Время события"},k)}), each Text.From( _{0}) & _{1})), Трансф = Table.TransformColumns( Объединение, {{ "Таблица2", (t) => [ a = Table.SelectColumns(t,{"№ инцидента","Время события"}), s = if List.Count(List.Combine(Table.ToRows(a))) < k*2 then List.Combine(Table.ToRows(a)) & List.Repeat({null}, k*2 - List.Count(List.Combine(Table.ToRows(a)))) else List.Combine(Table.ToRows(a)), r = Table.FromRecords({Record.FromList(s,l)}) ][r] }}), Развертывание = Table.ExpandTableColumn(Трансф, "Таблица2", l, l), Результат = Table.TransformColumnTypes(Развертывание, List.Transform(Table.ColumnNames(Развертывание), each if Text.Contains(_, "Время") then {_, type time} else if Text.Contains(_, "Дата") then {_, type date} else {_, type text})) in Результат