Как получить самое новое значение из столбца с условиями


У меня есть таблица в Excel, которая имеет столбцы:

  1. Дата
  2. Имя Человека
  3. Сумма (£)

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

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

Используя формулы, есть ли способ, которым я могу получить самую последнюю сумму для конкретного человека?

Если это слишком сложно или невозможно, то я могу согласиться на следующую работу: Добавьте 4-й столбец в таблицу под названием "Последний". Это будет отображать TRUE, если это последняя запись для конкретного человека, FALSE, если это не так.

3 3

3 ответа:

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

Немного погуглив, я наткнулся на решение, опубликованное на специальном сайте excel (смотрите здесь ). [NB-посмотрите под заголовком 'произвольные поиски']

Применяя его к вашему примеру, предположим, что ваши данные находятся в A1:C10 и в ячейке D2 вы хотите ввести имя и вернуть самый последний платеж в ячейке D3:

1   Date    Name    Amt    EnterName
2   20 Jul  Bob     50     <enter name here>
3   13 Sep  Susan   20     = enter formula here (see below)
4   06 Jan  Xavier  100

В ячейке D3 Введите следующую формулу массива (т. е. введите формулу и нажмите кнопку CTRL + SHIFT + ENTER

=INDEX($B$2:$C$10,SMALL(IF(OFFSET($B$2:$C$10,0,0,ROWS($B$2:$C$10),1)=$D$2, ROW(OFFSET($B$2:$C$10,0,0,ROWS($B$2:$C$10),1))-ROW(OFFSET($B$2:$C$10,0,0,1,1) )+1, ROW(OFFSET($B$2:$C$10,ROWS($B$2:$C$10)-1,0,1,1))+1),COUNTIF(OFFSET($B$2:$C$10,0,0,ROWS($B$2:$C$10),1),$D$2)),2)

Он рекомендовал бы проверить ссылку, которую я предоставил, если вы хотите получить более подробную информацию. Для ясности я просто адаптировал формулу (изменил ссылки на ячейки) из приведенной ссылки.

Вот один из способов сделать это, основанный на ответе, который я дал в предыдущем посте SO.

=INDEX($C$1:$C$19,MATCH(MAX(IF($B$1:$B$19="PersonNameHere",$A$1:$A$19,0)),IF($B$1:$B$19="PersonNameHere",$A$1:$A$19,"")))

Где A-столбец даты, B-столбец имени человека, а C-столбец суммы. Вы должны ввести эту формулу в виде массива, нажав Ctrl + Shift+Enter.

Я не вижу здесь простого способа сделать это только в одной формуле.

Если у вас есть данные от A2 до C11.
Вы можете добавить эту формулу в 4 - й столбец (допустим, в ячейку D2):

{=MAX(IF($B$2:$B$11=B2,$A$2:$A$11,0))}

Это формула массива вы должны проверить с помощью Ctrl-сдвиг-введите
Это скажет вам, что такое последняя дата для текущего человека.

И затем найти последнюю сумму С другой столбец (Пусть говорят в ячейке E2) и используют следующую формулу:

=INDEX($C$2:$C$11,MATCH(D2,$A$2:$A$11,0))

[EDIT] я только что попытался объединить формулы в одну, и это просто работает:

{=INDEX($C$2:$C$11,MATCH(MAX(IF($B$2:$B$11=B2,$A$2:$A$11,0)),$A$2:$A$11,0))}

И это все еще формула массива.

Увы, @Excellll был умнее (и быстрее) и дал решение с первого выстрела