Questo può essere fatto con solo due semplici formule per le colonne ordere score, più una terza, leggermente più complicata, per la namecolonna.
Imposta un foglio di calcolo come il seguente:

Quindi array multi-cella: inserisci queste formule negli intervalli specificati (ricordando di escludere l'ambiente circostante {e }):
Formula 1 ( D2:D4):
{=RANK(E2:E4,E2:E4)}
Formula 2 ( E2:E4):
{=LARGE(B2:B5,{1;2;3})}
Formula 3 ( F2:F4):
{=INDEX(A:A,10^5-MOD(LARGE(10^5*B2:B5+10^5-ROW(B2:B5),{1;2;3}),10^5))}
Per passare dai primi 3 risultati ai primi N in cui N è un numero elevato 10, ad esempio, anziché utilizzare un array hardcoded per i ranghi {1;2;3;4;5;6;7;8;9;10}, utilizzare quanto segue:
ROW(INDEX(X:X,1):INDEX(X:X,10))
Mentre funziona così com'è, è preferibile sostituire X:Xcon la colonna in cui è inserita la formula. In questo modo la formula non si interromperà se la colonna Xviene eliminata.
Questa è una soluzione molto migliore di quella onnipresente e più corta ROW(INDIRECT("1:10"))in quanto non volatile.
Spiegazioni formula:
Le prime due formule sono abbastanza semplici.
La versione predefinita della terza formula è la seguente:
=
INDEX(
(A:A),
10^5-
MOD(
LARGE(
10^5*B2:B5+10^5-ROW(B2:B5),
{1;2;3}
),
10^5
)
)
La formula funziona modificando i punteggi in modo che contengano anche il complemento a dieci dell'indice di riga. Quindi, dopo aver LARGEselezionato il punteggio modificato appropriato, l'indice viene estratto e utilizzato con INDEX()per ottenere il nome corrispondente al punteggio selezionato.
Passare attraverso la formula F3dovrebbe rendere più chiaro quanto sopra:
10^5*B2:B5
→ 10^5*{40;55;37;55}
→ {4000000;5500000;3700000;5500000}, i punteggi in scala
10^5-ROW(B2:B5)
→ 10^5-{2;3;4;5}
→ {99998;99997;99996;99995}, il complemento dei dieci dei numeri di riga dei punteggi
{4000000;5500000;3700000;5500000}+{99998;99997;99996;99995}
→ {4099998;5599997;3799996;5599995}, i punteggi "modificati"
LARGE({4099998;5599997;3799996;5599995},{1;2;3})
→ {5599997;5599995;4099998}, i primi tre punteggi modificati
10^5-MOD({5599997;5599995;4099998},10^5)
→ 10^5-{99997;99995;99998}
→ {3;5;2}, i numeri di riga dei primi tre punteggi
INDEX(A:A,{3;5;2})
→ {B;D;A}
→ Ddato che siamo nella seconda cella della formula immessa da più celle
Appunti:
- La formula predefinita funziona effettivamente se inserita.
- Le parentesi intorno
(A:A)sono necessarie per forzare il A:Arimanere sulla propria linea.
- Per punteggi identici, la formula restituisce i nomi in ordine di riga crescente. La formula può essere modificata per restituire i nomi in ordine decrescente usando il numero di riga normale anziché il complemento di dieci del numero di riga quando si modificano i punteggi:
{=INDEX(A:A,MOD(LARGE(10^5*B2:B5+ROW(B2:B5),{1;2;3}),10^5))}
- È anche possibile randomizzare l'ordine di punteggi identici generando un punteggio modificato con un numero casuale tra il punteggio e il numero di riga.