Как получить самое новое значение из столбца с условиями
У меня есть таблица в Excel, которая имеет столбцы:
- Дата
- Имя Человека
- Сумма (£)
Таблица используется для записи, когда люди платят мне деньги. Как правило, я могу получить более одного человека, который платит мне в один и тот же день. Кроме того, один и тот же человек будет платить мне в течение многих дней в течение долгого времени.
Записи добавляются в нижнюю часть таблицы, так что заказ будет по дате, но без дальнейшего заказа по имени или сумме.
Используя формулы, есть ли способ, которым я могу получить самую последнюю сумму для конкретного человека?
Если это слишком сложно или невозможно, то я могу согласиться на следующую работу: Добавьте 4-й столбец в таблицу под названием "Последний". Это будет отображать TRUE, если это последняя запись для конкретного человека, FALSE, если это не так.
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 был умнее (и быстрее) и дал решение с первого выстрела