Isso pode ser feito com apenas duas fórmulas simples para as colunas order
e score
, além de uma terceira, um pouco mais complicada, para a coluna name
.
Configure uma planilha como a seguinte:
Emseguida,arraydemúltiplascélulas-insiraessasfórmulasnosintervalosespecificados(lembrando-sedeexcluiros{
e}
):
Fórmula1(D2:D4
):
{=RANK(E2:E4,E2:E4)}
Fórmula 2 ( E2:E4
):
{=LARGE(B2:B5,{1;2;3})}
Fórmula 3 ( F2:F4
):
{=INDEX(A:A,10^5-MOD(LARGE(10^5*B2:B5+10^5-ROW(B2:B5),{1;2;3}),10^5))}
Para alterar dos três principais resultados para os primeiros N resultados, em que N é um número maior, digamos 10
, por exemplo, em vez de usar uma matriz codificada para as classificações, {1;2;3;4;5;6;7;8;9;10}
, use o seguinte:
ROW(INDEX(X:X,1):INDEX(X:X,10))
Embora isso funcione como é, é preferível substituir X:X
pela coluna na qual a fórmula foi inserida. Dessa forma, a fórmula não será interrompida se a coluna X
for excluída.
Esta é uma solução muito melhor que a onipresente e mais curta ROW(INDIRECT("1:10"))
, pois é não volátil.
Explicações da fórmula:
As duas primeiras fórmulas são simples o suficiente.
A versão prettificada da terceira fórmula é a seguinte:
=
INDEX(
(A:A),
10^5-
MOD(
LARGE(
10^5*B2:B5+10^5-ROW(B2:B5),
{1;2;3}
),
10^5
)
)
A fórmula funciona modificando as pontuações para que também contenham o complemento dez do índice da linha. Então, depois que LARGE
selecionar a pontuação modificada apropriada, o índice será extraído e usado com INDEX()
para obter o nome correspondente à pontuação selecionada.
Percorrendo a fórmula em F3
deve-se esclarecer:
-
10^5*B2:B5
→ 10^5*{40;55;37;55}
→ {4000000;5500000;3700000;5500000}
, as pontuações escaladas
-
10^5-ROW(B2:B5)
→ 10^5-{2;3;4;5}
→ {99998;99997;99996;99995}
, o complemento dez dos números de linha das pontuações
-
{4000000;5500000;3700000;5500000}+{99998;99997;99996;99995}
→ {4099998;5599997;3799996;5599995}
, as pontuações "modificadas"
-
LARGE({4099998;5599997;3799996;5599995},{1;2;3})
→ {5599997;5599995;4099998}
, as três principais pontuações modificadas
-
10^5-MOD({5599997;5599995;4099998},10^5)
→ 10^5-{99997;99995;99998}
→ {3;5;2}
, os números das três principais pontuações
-
INDEX(A:A,{3;5;2})
→ {B;D;A}
→ D
desde que estamos na segunda célula da fórmula inserida na matriz de células múltiplas
Notas:
- A fórmula prettificada realmente funciona se inserida.
- Os parênteses em torno de
(A:A)
são necessários para forçar o A:A
a permanecer em sua própria linha.
- Para pontuações idênticas, a fórmula retorna os nomes em ordem de linha crescente. A fórmula pode ser modificada para retornar os nomes em ordem decrescente usando o número de linhas simples em vez do complemento dez do número da linha ao modificar as pontuações:
{=INDEX(A:A,MOD(LARGE(10^5*B2:B5+ROW(B2:B5),{1;2;3}),10^5))}
- É até possível aleatorizar a ordem de pontuações idênticas, gerando uma pontuação modificada com um número aleatório entre a pontuação e o número da linha.