Более эффективный способ индексации матча? - PullRequest
0 голосов
/ 18 марта 2019

У меня есть таблица Excel, как эта; который должен быть заполнен периодически.

         01.16   02.16   03.16    04.16    05.16     06.16
Amy       5.6     6.2      7.2     7.6       0
Bob       7.3     7.8       0
Cindy     6.2     6.8      7.8     

Я пытаюсь создать формулу, которая скажет мне, каков самый последний набор «полных», ненулевых результатов. В этом случае я бы хотел сказать что-то вроде

        02.16
Amy      6.2  
Bob      7.8  
Cindy    6.8 

У меня есть что-то вроде этого, которое работает:

 B6 = index(B1:G1,1,min(COUNTIFS(B2:G2,"<>0",B2:G2,"<>"),COUNTIFS(B3:G3,"<>0",B3:G3,"<>"),
      COUNTIFS(B4:G4,"<>0",B4:G4,"<>"))

 B7 = INDEX(B2:G4,MATCH(A8,$A$2:$A$4,0),MATCH($B$7,B1:G1,0))

Однако я нахожу это довольно громоздким и надеялся выяснить, есть ли у кого-нибудь мысли о том, как его упростить?

1 Ответ

0 голосов
/ 18 марта 2019

Предполагая, что ваш набор данных находится в ячейках A1: G4:

data

Вы можете использовать формулу SUMPRODUCT, чтобы увидеть, какой "столбец" дает вам полные результаты(помните, что Excel также обрабатывает пустые ячейки как ноль):

=SUMPRODUCT(($B$2:$G$2<>0)*($B$3:$G$3<>0)*($B$4:$G$4<>0))

Текущий результат этой формулы равен 2. Теперь, когда вы знаете, какой столбец следует использовать, вы можете затем объединить его с INDEX для извлечениязначения:

index

Просто не забудьте обновить параметр row_num в каждой формуле для получения правильных результатов (1 для месяца, 2 для Эми, 3 для Боба, 4 дляСинди):

=INDEX($B$1:$G$4,1,SUMPRODUCT(($B$2:$G$2<>0)*($B$3:$G$3<>0)*($B$4:$G$4<>0)))

Например, для Синди вам нужно использовать следующую формулу:

=INDEX($B$1:$G$4,4,SUMPRODUCT(($B$2:$G$2<>0)*($B$3:$G$3<>0)*($B$4:$G$4<>0)))

Надеюсь, это сработает для вас.

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