Есть ли способ выполнить суммирование в диапазоне, критерии которого основаны на нескольких заголовках, без использования вспомогательного столбца?
В таблице A1:D21 я хотел создать под ней сводку (A23:D28), показывающую общую сумму входящих и исходящих сообщений каждого руководителя группы, а также общий итог.
Обычно я добавляю вспомогательный столбец, добавляя имена руководителей групп рядом с этими агентами, чтобы просто выполнять суммирование. Можно ли это сделать без помощи вспомогательной колонки?
Обновление добавлено еще один образец, близкий к тому, над чем я сейчас работаю
Все руководители групп и агенты уникальны, я просто дублирую таблицы, поскольку в той, над которой я работаю, много наборов таблиц, расположенных вот так.
Вот один из способов сделать это:
=LET(
_Filler, SCAN(,IF(D1:D21 = "Total",A1:A21,""),LAMBDA(x,y,IF(y = "",x,y))),
_Output, FILTER(HSTACK(_Filler,B1:D21),TEXTAFTER(_Filler&"|"&A1:A21,"|") = "Totals"),
VSTACK({"","Inbound","Outbound","Total"},_Output, HSTACK("",MMULT({1,1,1},DROP(_Output,,1)))))
Другой метод без использования вспомогательных функций LAMBDA()
, следующее решение может работать, а может и не работать с фактическими данными, но вот что я предположил в соответствии с данными в ОП: если все агенты одинаковы для каждого руководителя группы, тогда мы можем стереть их, используя UNIQUE()
, чтобы захватить только отдельные, да, следует еще раз отметить, что я намеренно делаю это на основе заданных данных, чтобы агенты не были разными, а затем с помощью манипуляций с функциями DROP()
, TAKE()
и FILTER()
мы можем добиться желаемого результата. Все это зависит, опять же, это полностью основано на приведенных примерных данных и шаблонах.:
=LET(
_Data, A1:D21,
_Teams, UNIQUE(TAKE(_Data,,1),,1),
_Vals, DROP(FILTER(_Data, TAKE(_Data,,1) = "Totals"),,1),
_Combined, HSTACK(VSTACK(_Teams,""), VSTACK(_Vals, MMULT({1,1,1}, _Vals))),
VSTACK(HSTACK("",DROP(TAKE(_Data,1),,1)), _Combined))
Обновлено: обновленное решение, основанное на редактировании с новыми образцами данных, опубликованных OP в 2024-05-01 21:14:40Z.
=LET(
_Data, A1:D32,
_TeamLeaders, TAKE(FILTER(_Data, INDEX(_Data,,2) = ""),,1),
_Vals, DROP(FILTER(_Data, TAKE(_Data,,1) = "Totals"),,1),
_Totals, MMULT({1,1,1,1}, TAKE(_Vals,,2)),
_Bottom, HSTACK("Totals",_Totals, TAKE(_Totals,,-1)/TAKE(_Totals,,1)),
_Middle, HSTACK(_TeamLeaders,_Vals),
_Top, HSTACK("",DROP(TAKE(_Data,1),,1)),
VSTACK(_Top, _Middle, _Bottom))
Предложение: поместите следующую формулу в диспетчер имен и определите ее как SUMMARY
=LAMBDA(array,
LET(
_Data, array,
_TeamLeaders, TAKE(FILTER(_Data, INDEX(_Data,,2) = ""),,1),
_Vals, DROP(FILTER(_Data, TAKE(_Data,,1) = "Totals"),,1),
_Totals, MMULT({1,1,1,1}, TAKE(_Vals,,2)),
_Bottom, HSTACK("Totals",_Totals, TAKE(_Totals,,-1)/TAKE(_Totals,,1)),
_Middle, HSTACK(_TeamLeaders,_Vals),
_Top, HSTACK("",DROP(TAKE(_Data,1),,1)),
VSTACK(_Top, _Middle, _Bottom)))
А теперь используйте следующую формулу под каждой таблицей:
=SUMMARY(A1:D32)
=SUMMARY(F1:I32)
=SUMMARY(K1:N32)
Я попробовал переместить вашу формулу под таблицу и просто продублировать все столбцы, включая созданную вами формулу, и все работает нормально. Я могу просто сделать это, если мне нужно добавить больше столбцов для продвижения вперед, и формула будет извлекать любые данные над ней.
@Харви Я не думаю, что возникнут какие-либо проблемы, если у вас несколько столбцов, потому что, если я предполагаю, что вы добавляете столбцы для чисел дополнений, то это должно быть перед последним столбцом «Итоги», и если это какие-то другие текстовые столбцы, связанные с руководителем группы, тогда вы должен обновить свой пост. в остальном я не вижу никаких проблем с формулой.
@Харви, ок, не мог бы ты дать мне знать, что ты ищешь? также в ваших сообщениях ни разу не упоминалось, что у вас будет несколько столбцов.
да, этот пост - это всего лишь простой образец для более легкого понимания того, чего я хотел достичь, но теперь я только что понял формулу, которую вы мне дали, она отлично работает, но мне трудно применить ее к моему реальному заданию, которое состоит из нескольких набор этого по столбцам
конечно, подожди минутку, и я поделюсь с тобой файлом Excel в качестве образца.
@Харви, видишь, я опубликовал еще один метод и сделал несколько примечаний, чтобы он помог тебе понять.
Я понял, сэр! Я собираюсь прочитать это сейчас. Я также обновил свой пост, чтобы показать вам еще один пример, которого я хочу достичь, используя формулу, которую вы мне дали.
@Харви, это последний вариант, надеюсь, изменений больше не будет?
@Харви, я обновил свой ответ на основе твоих новых образцов данных, он также LAMBDA()
не основан и не прост для понимания, надеюсь, ты сможешь выполнить эту тренировку.
ВАУ, это выглядит потрясающе! Завтра я попробую это снова! Спокойной ночи, сэр, еще раз спасибо!
@Харви, ты еще не принял мои ответы на свои старые сообщения. Этот один
ух ты, это было так давно! Должно быть, я забыл это. Я принял ваш ответ. Спасибо!
Рассматривали ли вы использование таблиц вместо просто диапазонов?
Вот один из способов использования таблиц и сводных таблиц. Использование таблиц облегчит использование Power Query
при необходимости в дальнейшем.
Агент
Руководитель группы (необязательно – может помочь с вводом данных)
Звонки
=[@[Accepted Calls]]/[@[Entered Calls]]
=XLOOKUP([@Name],Agent[Name],Agent[Team Leader])
Агент 2
53
18
34%
Руководитель группы А
Сводные таблицы
Это работает отлично! Поскольку я действительно не знаком с Lambda, и это новые функции для меня. Моя следующая проблема заключается в том, как сделать это гибким, поскольку я собираюсь использовать его для нескольких столбцов. Но это здорово, спасибо!