Определите максимальное значение группы и отобразите эту строку - PullRequest
0 голосов
/ 18 октября 2019

У меня есть несколько тысяч строк в таблице Excel, которая (упрощенно) выглядит следующим образом:

ID   Category Animal Version Value 
100     A       Dog     1      20
100     B       Cat     2      50
100     C       Dog     3      50
200     A       Dog     1      100
200     A       Cat     2      100
300     B       Cat     1      80 
400     C       Dog     1      80

Мне нужна строка с максимальной / максимальной версией для каждой группы идентификаторовв списке.

Другими словами, я хотел бы, чтобы эти показы:

ID   Category Animal Version Value 
100     C       Dog     3      50
200     A       Cat     2      100
300     B       Cat     1      80 
400     C       Dog     1      80

Возможно ли это?

Ответы [ 3 ]

0 голосов
/ 18 октября 2019

Вы можете использовать Advanced Filter с критериями формулы:

=D9=AGGREGATE(14,6,1/(A9=Table1[ID])*Table1[Version],1)

, где D9 - местоположение первой записи в столбце Value

Перед применением фильтра

enter image description here

После применения фильтра

enter image description here

0 голосов
/ 21 октября 2019

Example

Предположим, ваши данные находятся в диапазоне A1:E8,

В ячейке A11, введите следующую формулу, чтобы найти уникальный ID, перетаскивайте его, пока не появится ошибка #N/A:

=INDEX($A$2:$A$8,MATCH(0,INDEX(COUNTIF($A$10:A10,$A$2:$A$8),0),0))

В ячейке B11 введите следующую формулу и перетащите ее вниз, чтобы найти самую последнюю Version:

=AGGREGATE(14,6,$D$2:$D$8/($A$2:$A$8=A11),1)

В ячейках C11, D11 и E11 введите следующие формулы соответственно и перетащите их вниз, чтобы найти соответствующие Category, Animal и Value:

=INDEX($B$2:$B$8,MATCH(1,INDEX(($A$2:$A$8=A11)/($D$2:$D$8=B11),0),0))

=INDEX($C$2:$C$8,MATCH(1,INDEX(($A$2:$A$8=A11)/($D$2:$D$8=B11),0),0))

=INDEX($E$2:$E$8,MATCH(1,INDEX(($A$2:$A$8=A11)/($D$2:$D$8=B11),0),0))

Дайте мне знать, если есть какие-либо вопросы. Ура:)

0 голосов
/ 18 октября 2019

Для списка без дубликатов вы можете поместить this в ячейку G2 FORMULA ARRAY: CTRL + SHIFT + ENTER

=IFERROR(INDEX(A:A,MATCH(1,(COUNTIF(G$1:G2,A$1:A$99)=0)*(A$1:A$99<>""),0)),"")

Это дает вамсписок с уникальными идентификаторами. Теперь вы можете использовать формулу max, чтобы получить максимальный номер версии каждого идентификатора. ФОРМУЛА Массива: CTRL + SHIFT + ENTER

=MAX(IF($A$2:$A$2000=G3,$D$2:$D$2000,0))

Остальное можно сделать с помощью формул INDEX/MATCH. enter image description here

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