
Я хотел бы вывести «промежуточный итог» таблицы, где функция промежуточного итога представляет собой конкатенацию строк, а не какую-то числовую функцию (количество, сумма, среднее).
Например, рассмотрим эту таблицу:
Мне нужен следующий результат:
Мне это кажется "concat" (или "join"), поднятым над промежуточным итогом. Но я не думаю, что Excel действительно понимает функциональное программирование (независимо от того, что утверждают некоторые люди). Так как я могу это сделать (особенно, как я могу это сделать, используя пункт меню Subtotal, который автоматически вставляет все формулы промежуточного итога, даже если мне придется впоследствии редактировать формулы, чтобы получить то, что я хочу).
И, на самом деле, Excel очень мощный с кучей функций. Так могу ли я добиться этого каким-то другим способом, помимо подсчета промежуточных итогов? (Я бы предпочел решения без скриптов.)
И, кроме того, Excel — не единственный инструмент в наборе. Предположим, у меня есть эта таблица в CSV-файле. Есть ли способ сделать это с помощью стандартных утилит Unix (например, cut
? Предположительно, awk
справится, как это будет выглядеть)?
решение1
Это может быть не самое элегантное решение, но попробуйте сделать это, основываясь на том факте, что Col1 гарантированно будет отсортирован:
Добавьте столбец (C) для хранения кумулятивных конкатенаций значений Col2. Формула для ячейки C2 —
=IF(A2=A1, CONCATENATE(C1, ",", B2), B2)
и вы можете автоматически заполнить ее для остальных ячеек.Добавьте столбец (D), чтобы отметить строки, содержащие максимальную (самую длинную) конкатенацию, то есть последнюю строку каждого значения в Col1. Формула для ячейки D2 —
=IF(A2<>A3, TRUE, FALSE)
и вы можете автоматически заполнить остальные ячейки.Таблица будет выглядеть так:
Отфильтруйте таблицу по
TRUE
значениям в столбце D:Теперь вы можете скрыть столбцы B и D: