Могу ли я выполнить «промежуточный итог» с помощью произвольной функции, например, конкатенации строк?

Могу ли я выполнить «промежуточный итог» с помощью произвольной функции, например, конкатенации строк?

Я хотел бы вывести «промежуточный итог» таблицы, где функция промежуточного итога представляет собой конкатенацию строк, а не какую-то числовую функцию (количество, сумма, среднее).

Например, рассмотрим эту таблицу:

введите описание изображения здесь

Мне нужен следующий результат:

введите описание изображения здесь

Мне это кажется "concat" (или "join"), поднятым над промежуточным итогом. Но я не думаю, что Excel действительно понимает функциональное программирование (независимо от того, что утверждают некоторые люди). Так как я могу это сделать (особенно, как я могу это сделать, используя пункт меню Subtotal, который автоматически вставляет все формулы промежуточного итога, даже если мне придется впоследствии редактировать формулы, чтобы получить то, что я хочу).

И, на самом деле, Excel очень мощный с кучей функций. Так могу ли я добиться этого каким-то другим способом, помимо подсчета промежуточных итогов? (Я бы предпочел решения без скриптов.)

И, кроме того, Excel — не единственный инструмент в наборе. Предположим, у меня есть эта таблица в CSV-файле. Есть ли способ сделать это с помощью стандартных утилит Unix (например, cut? Предположительно, awkсправится, как это будет выглядеть)?

решение1

Это может быть не самое элегантное решение, но попробуйте сделать это, основываясь на том факте, что Col1 гарантированно будет отсортирован:

  1. Добавьте столбец (C) для хранения кумулятивных конкатенаций значений Col2. Формула для ячейки C2 — =IF(A2=A1, CONCATENATE(C1, ",", B2), B2)и вы можете автоматически заполнить ее для остальных ячеек.

  2. Добавьте столбец (D), чтобы отметить строки, содержащие максимальную (самую длинную) конкатенацию, то есть последнюю строку каждого значения в Col1. Формула для ячейки D2 — =IF(A2<>A3, TRUE, FALSE)и вы можете автоматически заполнить остальные ячейки.

    Таблица будет выглядеть так:

    введите описание изображения здесь

  3. Отфильтруйте таблицу по TRUEзначениям в столбце D:

    введите описание изображения здесь

  4. Теперь вы можете скрыть столбцы B и D:

    введите описание изображения здесь

Связанный контент