Excel: минимальная / максимальная сумма на человека в уникальные даты - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть таблица Excel с 3 столбцами (см. Рисунок ниже): Дата , Имя (инициалы) и Потраченная сумма

Я хотел бы вернуть значение минимальной и максимальной суммы (отдельно), потраченной на каждого человека в день (B31: C33).

Я думал, что формула выглядит так:

{=MIN(SUMIFS(C2:C26,B2:B26=A31, A2:A26))}

Или вот так:

{=SUMPRODUCT(--(C2:C26,B2:B26=A31,?))}

[Excel Image Sample

К сожалению, я не могу вернуть правильное значение. Буду признателен за помощь.

Я буду ждать некоторых ответов.

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

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

Это формула массива, формулы массива должны быть подтверждены нажатием Ctrl + Shift + Enter

MIN - =SMALL(IF(SUMIFS($C$2:$C$26,$A$2:$A$26,IF($B$2:$B$26=$A30,$A$2:$A$26),$B$2:$B$26,$A30),SUMIFS($C$2:$C$26,$A$2:$A$26,IF($B$2:$B$26=$A30,$A$2:$A$26),$B$2:$B$26,$A30)),1)

MAX - =LARGE(IF(SUMIFS($C$2:$C$26,$A$2:$A$26,IF($B$2:$B$26=$A30,$A$2:$A$26),$B$2:$B$26,$A30),SUMIFS($C$2:$C$26,$A$2:$A$26,IF($B$2:$B$26=$A30,$A$2:$A$26),$B$2:$B$26,$A30)),1)

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

Возможно, вы заметили, что единственное, что изменилось в этой формуле, это SMALL() до LARGE(), это потому, что массив SUMIFS() обрабатывает итоговую сумму за каждый день для этих "Инициалов человека".

SUMIFS([amounts to sum],[dates],

Здесь мы остановимся, чтобы получить массив дат для критерия 1 из SUMIFS():

IF([name initials]=[person initials],[dates])

Поскольку это массив, мы получаем список совпадающих дат или FALSE, например: {43252;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;43301;43301;FALSE;43301;FALSE;FALSE;FALSE;FALSE;43342;43342;FALSE;FALSE;FALSE;FALSE;FALSE;43317;43317;43317}

Это первый критерий, а вторым критерием является просто «Имя (инициалы)»

,[name initials],[person initials])

Теперь у нас есть массив 0, где критерии не соответствуют и суммы, которые мы хотели бы оценить.

Чтобы сделать данные полезными для нас, мы используем двоичную природу Excel в том смысле, что 0 будет читаться как результат FALSE для оператора IF():

IF([result from formula],[result from formula])

Это переводит результат SUMIFS() обратно либо в FALSE, либо в наши итоги.

Теперь мы можем свободно использовать MIN([formula]) или SMALL([formula],1), чтобы получить наше наименьшее значение.

Поскольку 0 не будет возвращено из максимума при условии, что у вас есть совпадающие значения, вам не нужно фактически выполнять двоичный трюк для MAX([formula]) или LARGE([formula],1):

=MAX(IF(SUMIFS($C$2:$C$26,$A$2:$A$26,IF($B$2:$B$26=$A30,$A$2:$A$26),$B$2:$B$26,$A30))

Опять же, извините за задержку, и я ценю, что это много, так что не стесняйтесь задавать любые вопросы.

example

0 голосов
/ 04 сентября 2018

На ваш вопрос можно ответить с помощью сводной таблицы:

Предполагая, что вы хотите абсолютный минимум и абсолютный максимум для всех дат

  • В 'Rows' вы добавляете инициалы, так как вам понадобится минимум и максимум на человека на протяжении всех дат.
  • В «Значениях» вы хотите потратить сумму, но не Сумма (это значение по умолчанию показано) ... Вы можете изменить значения так, чтобы отображался Мин , а другой показывает Макс .

Выполните следующие действия:

Начало Вам следует начать с выбора таблицы (A1: C26), а затем перейти к Insert... PivotTable. Я создал фиктивную таблицу с несколькими значениями, поэтому в моем случае я выбрал (A1: C10):

Start Шаг 1 После создания сводной таблицы она будет пустой. Нажмите на большой значок, который появляется, и справа появится меню с полями сводной таблицы. Здесь перетащите Имя (Инициалы) в Строки и Количество, потраченное на Значения, дважды. Тогда это будет выглядеть так:

Step1

Шаг 2 Сводная таблица показывает сумму сумм, но вы хотите минимальное и максимальное. Их можно изменить, нажав на информационную кнопку справа и выбрав нужный расчет (например, минимум):

Step2

Шаг 3 Повторите шаг 2 и установите максимальное значение.

Конечный результат Конечный результат будет таким: EndResult

Я удалил Великие итоги, поскольку они были бессмысленными, в Design... Grand Totals... Off for rows and columns. Это меню появляется только при нажатии на сводную таблицу.

Если вы хотите сделать это для каждой даты

Легко! Помимо того, что вы уже сделали, просто перетащите «Дата» в столбцы, и она покажет один минимум и один максимум на уникальную дату.

[РЕДАКТИРОВАТЬ] Получение даты в столбцах не отвечает на вопрос, но на основе комментария, что если вы добавите его в строки? Вы получите что-то вроде этого:

newtry

Который может быть сведен в таблицу, подобную этой, которая, кажется, вам нужна:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...