Страницы: 1
RSS
Слияние двух динамических массивов
 
Добрый день. У меня есть два (или более) однотипных динамических массива. Например, два списка людей с именами и датами рождения. Массив с датами рождения людей из одного списка, и массив с датами рождения людей из другого списка.
Как сделать массив со всеми уникальными датами?

У меня есть решение - я нахожу минимальную и максимальную даты среди всех дат. Строю массив на все даты. Проверяю есть ли конкретная дата в каком-то из списков. строю массив для дат, которые прошли проверку.

Но возможно ли как-то сделать объединение массивов изящнее?
 
Можно через Power Query сделать, можно формулами попробовать (зависит от расположения данных), можно макросом.
Без файла примера - только умозрительные рассуждения.
Кому решение нужно - тот пример и рисует.
 
Загрузил файл.
В файле две таблицы по два столбца. - сумма и дата. Ниже таблиц исходные массивы с уникальными датами для каждой таблицы. Они выделены голубым.
Надо получить уникальные даты для этих двух массивов.
Решение справа
я нахожу полный диапазон дат и из него выбираю те, которые встречаются в исходных массивах.
Ответ справа - он выделен зеленым.

Суммы нужны просто для проверки того, что все работает. Они совпадают как слева, так и справа
.
Мой ответ мне кажется слишком громоздким.
 
Фрол Деревянкин, в PQ
Код
let
  src         = Excel.CurrentWorkbook(){[ Name = "Таблица1" ]}[Content] & Excel.CurrentWorkbook(){[ Name = "Таблица13" ]}[Content],
  selectDate  = Table.SelectColumns ( src, { "Дата" } ),
  typed       = Table.TransformColumnTypes ( selectDate, { { "Дата", type date } } ),
  filterNulls = Table.SelectRows ( typed, each ( [Дата] <> null ) ),
  tblDistinct = Table.Distinct ( filterNulls, { "Дата" } ),
  sort        = Table.Sort ( tblDistinct, { { "Дата", Order.Ascending } } )
in
  sort
 
Спасибо, а если средствами самого экселя?
 
Цитата
Фрол Деревянкин написал:
а если средствами самого экселя?
Цитата
Фрол Деревянкин написал:
У меня есть решение
 
А PQ не средство excel?;)
В office 365 есть функция УНИК(). Может, что-то и для объединения массивов есть.
Изменено: surkenny - 17.10.2021 17:31:35
 
Для меня эта ситуация тоже очень актуальная.
Нужно просто объединить два  и более однотипных динамических массива БЕЗ использования PQ (из-за ограничений Excel on-line)
Может быть кто то решил что то подобное?
 
=ФИЛЬТР.XML("<j><i>"&ПОДСТАВИТЬ(ОБЪЕДИНИТЬ("|";;Та1[Дата];Та2[Дата]);"|";"</i><i>")&"</i></j>";"//i[not(preceding::*=.)]")
- нужен минимум офис 2019, оставляет уникальные

=СОРТ(УНИК(ФИЛЬТР.XML("<j><i>"&ПОДСТАВИТЬ(ОБЪЕДИНИТЬ("|";;Та1[Дата];Та2[Дата]);"|";"</i><i>")&"</i></j>";"//i")))
- нужен офис 365 или 2021, оставляет уникальные и отсортирует
 
Самое стандартное средство Excel это сводная таблица. Для примера в вашем файле подходит. Если же хотите без лишних движений надо макрос.
Похожий макрос здесь
Изменено: Евгений Смирнов - 07.12.2021 17:14:13
 
Цитата
написал:
Самое стандартное средство Excel это сводная таблица. Для примера в вашем файле подходит.
Сводная таблица по нескольким диапазонам (или умным таблицам) или как?
 
Kanev75 Я небольшой спец по сводным, на днях сам учился книга зарплатная ведомость на листе за месяц т.е 12 листов. сводная все собрала с 12 листов на 1 лист и все посчитала. Причем написан макрос для этой книги наверно пол дня писал, а сводную, хоть и не очень умею минут за 10 сделал.
Изменено: Евгений Смирнов - 07.12.2021 18:12:10
 
Цитата
написал:
сводная все собрала с 12 листов на 1 лист
Как вам удалось сделать сводную таблицу по 12 листам не применяя PQ?
 
Да И Вас получиться
Изменено: Евгений Смирнов - 07.12.2021 18:22:51
 
Цитата
написал:
сводная все собрала с 12 листов на 1 лист и все посчитала
Подскажите, Вы макросом это делаете?
 
И макросом можно
 
Kanev75,
ссылка 1
ссылка 2
ссылка 3
ссылка 4
Изменено: New - 07.12.2021 19:27:46
Страницы: 1
Наверх