Modify Duplicate values

0

Eu tenho um conjunto de células que têm um valor para cada. Esses valores estão vinculados ao nome de um aluno. Estou tentando identificar os 5 alunos mais baixos com base nesse valor. Eu tenho essa fórmula para encontrar os valores mais baixos -

= SMALL (FilteredData [DARTOPIMaths], COUNTIF (FilteredData [DARTOPIMaths], "<=" & K2) +1)

e esta fórmula para pesquisar o nome relacionado a esse valor -

= ÍNDICE (ApelidoParaNameFiltered, CORRESPONDÊNCIA (K3, FilteredData [DARTOPIMaths], 0))

Isso funciona bem, mas meu problema é quando eu tenho dois alunos com o mesmo valor. Em seguida, relata o primeiro nome duas vezes. Eu tentei tornar os valores únicos sem alterar o valor original, mas não consigo fazer isso funcionar.

Eu realmente preciso encontrar a parte inferior 5 e listar os nomes dos alunos. Se dois alunos tiverem o mesmo valor, seleciona os nomes dos dois alunos.

Qualquer ajuda seria muito apreciada.

Atenciosamente

    
por Stuart Scott 14.07.2017 / 13:14

2 respostas

0

Nós podemos des-conflitar as duplicatas. Digamos que tenhamos dados como:

Algumasdaspontuaçõessãoduplicadas,porisso,emC1,inserimos:

=B1

eemC2digite:

=(COUNTIF($B$1:B2,B2)-1)*0.0001+B2

ecopie:

Osvaloresnacolunaauxiliarsãotodosexclusivos.EmE1digite:

=INDEX(A:A,MATCH(SMALL(C:C,ROW()),C:C,0))

ecopieparabaixo.EmF1digite:

=INDEX(B:B,MATCH(SMALL(C:C,ROW()),C:C,0))

ecopie:

Esta modificação da abordagem de valores duplicados evita a necessidade de fórmulas de matriz.

    
por 14.07.2017 / 15:11
0

Aqui está uma maneira de fazer isso (eu copiei a tabela que @GaryStudent usou).

  • Determine qual "menor" você deseja e coloque esse valor em D1 ( 5 neste exemplo)
  • Crie uma matriz de resultados de TRUE/FALSE dependendo se uma pontuação é menor ou igual à d1 th menor pontuação
  • multiplique esse array por uma matriz dos números de linha, para obter a linha apropriada
  • a adição de 1/1/(array) altera isso para uma matriz de DIV/0 de erros e o número da linha.
  • Use o argumento SMALL da função agregada para retornar apenas os valores que NÃO são erros.
  • Use esse resultado para indexar na tabela e retornar o nome e a pontuação.
  • usei referências estruturadas como você fez.

Note que isso poderia retornar mais de cinco alunos, tendo em vista a possibilidade de laços

F1: =IFERROR(INDEX(StudentScores[#All],AGGREGATE(15,6,1/1/(StudentScores[Score] <= SMALL(StudentScores[Score],$D$1))*ROW(StudentScores),ROWS($1:1)),1),"")

G1: =IFERROR(INDEX(StudentScores[#All],AGGREGATE(15,6,1/1/(StudentScores[Score] <= SMALL(StudentScores[Score],$D$1))*ROW(StudentScores),ROWS($1:1)),2),"")

ÉclaroquevocêtambémpodeusaroAdvancedFilter,comumafórmulacomocritério,egravarosresultadosemumlocal"NOVO". Mas pode não ser tão dinâmico quanto o que você precisa.

    
por 15.07.2017 / 21:04