У меня есть следующие данные о продажах по клиентам:
| - | A | B | C | D | E | F | G |
|---|---------------|--------|--------|--------|--------|--------|--------|
| 1 | Customer Name | Jan-18 | Feb-18 | Mar-18 | Apr-18 | May-18 | Jun-18 |
| 2 | Mr.A | 1000 | 500 | 0 | 200 | 0 | 0 |
| 3 | Mr.B | 0 | 300 | 200 | 0 | 0 | 100 |
Мне нужна формула, чтобы знать последние продажи соответствующего заказанного клиента (название месяца)
в этом случае последний заказ по Mr. A
находится в апреле-18, а Mr.B
- в 18 июня.
У меня есть более 2000 данных о клиентах и продажах с апреля 2016 года по последний месяц, поэтому наличие формулы, которая мне поможет, будет огромной экономией времени.
Предполагая, что ваши «месяцы» - это даты, а не текст. Предоставлено @barry houdini:
=LOOKUP(2,1/(B2:G2<>0),B$1:G$1)
в Row2 и скопировал в соответствии с требованиями, отформатировал mmm-yy
.
Альтернатива использованию LOOKUP()
, как в этот ответ, не уверен, какое влияние это окажет на производительность, поскольку оба должны создать массив, но я бы сделал удар в темноте, что это менее производительно:
=INDEX($B$1:$G$1,,MAX((B2:G2<>0)*COLUMN(B2:G2)-1))
- Ctrl + Shift + Enter
Конечно, это также можно отредактировать для двойного поиска по клиенту:
=INDEX($B$1:$G$1,,MAX(INDEX(($B$2:$G$3<>0)*COLUMN($B$2:$G$3)-1,MATCH("Mr.B",$A$2:$A$3,0),0)))
Для этого не требуется CSE, поскольку INDEX()
обрабатывает манипуляции с массивом.
Извините, я пробовал, это не сработало, мне просто любопытно с этой формулой, однако я попробовал ответить @pnuts, он работает, спасибо ...
пожалуйста, включите снимок экрана из Excel для лучшего понимания