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

Вход

Регистрация

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

 

= Мир MS Excel/Сопоставление двух листов одной таблицы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Сопоставление двух листов одной таблицы
sharip199605 Дата: Среда, 20.07.2022, 14:17 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Во вкладке "Аварии по температуре" находятся аварии к которым необходимо подставить аварии по питанию из вкладки "Аварии по питанию" где совпадают даты. Подробнее в самой таблице. Если в этот день когда произошла авария по температуре имеется несколько аварий по питанию указать каждую в отдельном столбце и время каждого инцидента. Буду благодарен.
К сообщению приложен файл: 2320559.xlsx (15.8 Kb)


Сообщение отредактировал sharip199605 - Среда, 20.07.2022, 14:19
 
Ответить
СообщениеВо вкладке "Аварии по температуре" находятся аварии к которым необходимо подставить аварии по питанию из вкладки "Аварии по питанию" где совпадают даты. Подробнее в самой таблице. Если в этот день когда произошла авария по температуре имеется несколько аварий по питанию указать каждую в отдельном столбце и время каждого инцидента. Буду благодарен.

Автор - sharip199605
Дата добавления - 20.07.2022 в 14:17
msi2102 Дата: Среда, 20.07.2022, 15:07 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
Если офис 2019 и выше
[vba]
Код
=ТРАНСП(ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(ОБЪЕДИНИТЬ(";";1;ФИЛЬТР(ФИЛЬТР('Аварии по питанию'!$B$2:$E$46;'Аварии по питанию'!$D$2:$D$46=D2);{1;0;0;1}));";";"</s><s>")&"</s></t>";"//s"))
[/vba]
К сообщению приложен файл: 4582115.xlsx (17.2 Kb)
 
Ответить
СообщениеЕсли офис 2019 и выше
[vba]
Код
=ТРАНСП(ФИЛЬТР.XML("<t><s>"&ПОДСТАВИТЬ(ОБЪЕДИНИТЬ(";";1;ФИЛЬТР(ФИЛЬТР('Аварии по питанию'!$B$2:$E$46;'Аварии по питанию'!$D$2:$D$46=D2);{1;0;0;1}));";";"</s><s>")&"</s></t>";"//s"))
[/vba]

Автор - msi2102
Дата добавления - 20.07.2022 в 15:07
sharip199605 Дата: Среда, 20.07.2022, 15:14 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

msi2102, Офис 2016 года к сожалению, пишет неверная функция
 
Ответить
Сообщениеmsi2102, Офис 2016 года к сожалению, пишет неверная функция

Автор - sharip199605
Дата добавления - 20.07.2022 в 15:14
sharip199605 Дата: Среда, 20.07.2022, 15:54 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Думаю совместить дату и № БС в первой вкладке и так поискать
 
Ответить
СообщениеДумаю совместить дату и № БС в первой вкладке и так поискать

Автор - sharip199605
Дата добавления - 20.07.2022 в 15:54
msi2102 Дата: Четверг, 21.07.2022, 16:53 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
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
    Результат
[/vba]
К сообщению приложен файл: 2320559_2.xlsx (30.6 Kb)
 
Ответить
Сообщение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
    Результат
[/vba]

Автор - msi2102
Дата добавления - 21.07.2022 в 16:53
  • Страница 1 из 1
  • 1
Поиск:

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