Sortering uden at sortere

Af og til, har man brug for at sortere en kolonne i forhold til værdier i en anden kolonne, men ønsker ikke at sortere regnearket. I nedenstående tabel er opgaven at få sortere navnene i rækkefølge, så det navn, der har den største værdi i B-kolonnen, kommer til at stå øverst, derefter det næste og så fremdeles. Denne rækkefølge skal fremgå af C-kolonnen som vidt. D-kolonnen er en hjælpekolonne, hvor der i stigende rækkefølge er indsat tal, svarende til det antal rækker, der skal sorteres.

  A B C D
1 Jens 3 Georg        1
2 Svend 6 Niels 2
3 Max 4 Børge 3
4 Børge 7 Svend 4
5 Erik 1 Max 5
6 Niels 9 Jens 6
7 Georg 11 Ivan 7
8 Ivan 2 Erik 8

Opgaven kan løses ved at indsætte følgende formel i C1, og kopiere den til C8.

=INDEKS($A$1:$A$8;RÆKKE(INDIREKTE(ADRESSE(SAMMENLIGN(STØRSTE($B$1:$B$8;D1);$B$1:$B$8;0);1)));1)

Identiske værdier

Formlen kan dog give problemer, hvis flere navne har samme værdi i B-kolonnen. I stedet kan følgende bruges:

I C-kolonnen indsættes:

=HVIS(B1="";"";B1-RÆKKE()/10^10)

I D_kolonnen indsættes

=HVIS(RÆKKE()>TÆL($C:$C);"";INDEKS(A:A;SAMMENLIGN(STØRSTE($C:$C;RÆKKE());$C:$C;0)))

Navnene i sorteret orden vil nu blive vist i D-kolonnen. C-kolonnen kan evt. skjules, så den ikke "generer". Ønsker man værdierne i B-kolonnen sorteret også, kan følgende indsættesi E-kolonnen:

=HVIS(RÆKKE()>TÆL($C:$C);"";INDEKS(B:B;SAMMENLIGN(STØRSTE($C:$C;RÆKKE());$C:$C;0)))

Sortering på tværs af ark og med tomme rækker (Nyt 19-9-08)

Af og til skal "sorteringen2 udføres i det andet ark. Desuden kan der være tomme række i den liste, der skal sorteres. Disse tomme rækker ønskes ikke "sorteret" med.

  A B C
1 Jens 3  
2 Svend 6  
3 Max 4  
4 Børge 7  
5      
6 Niels 4  
7 Georg 11  
8 Ivan 2  

I C-kolonnen indsættes hjælpeformlen vist ovenfor: =HVIS(B1="";"";B1-RÆKKE()/10^10). Arket listen ønskes nu sorteret i Ark2 så den person, der har den største værdi i B-kolonnen placeres først. I den første celle, hvor der ønskes navne, her B1,  indsættes

=HVIS(RÆKKE()>TÆL(Ark1!$C:$C);"";INDEKS(Ark1!A:A;SAMMENLIGN(STØRSTE(Ark1!$C:$C;RÆKKE());Ark1!$C:$C;0)))

Og i kolonnen med tal:

=HVIS(RÆKKE()>TÆL(Ark1!$C:$C);"";INDEKS(Ark1!B:B;SAMMENLIGN(STØRSTE(Ark1!$C:$C;RÆKKE());Ark1!$C:$C;0)))

Kopier de to formler nedad. Skal der sorteres i modsat rækkefølge ændres STØRSTE til MINDSTE.

 

- Retur til Excel -