Avatar billede h_s Forsker
03. oktober 2003 - 08:28 Der er 21 kommentarer og
1 løsning

Rangering af byer, så de står i rækkefølge

Hej Ekspert:-)

Jeg har i kolonne A73:A87 15 byer stående. I kolonne B:H ud for byerne er der nogle placeringer i forskellinge konkurrencer. Placeringerne tælles sammen i J-kolonnen, så man kan sige at den by, der har mindst point er samlet vinder. I I-kolonnen er der vha. funktionen Plads()ud fra J-kolonnen, så den by der har midst point får et 1-tal. 2. pladsen får et 2-tal osv.
Jeg har to udfordringer:
Jeg vil gerne have rangeret byerne, så de står med nr. et først og nr. 15 til sidst.
Hvis 2 eller flere byer har samme point, skal de have samme placering og den by, og de byer der kommer efter skal have en placering, der passer med antal byer foran. Ex: X-by og Y-by har på første pladsen 15 point (begge 1. pladsen). Z-by har på næste plads 16 point (skal have 3. pladsen).
Resultatet må gerne skulle laves ud fra disse celler og så placeres et andet sted i regnearket.
Avatar billede lasseo Nybegynder
03. oktober 2003 - 08:34 #1
Du skal have fat i Data, Sorter
Først markerer du hele det område du vil arbejde med (eller blot een celle i området, hvis det er "uden huller").
Så vælger du data, sorter
Avatar billede lasseo Nybegynder
03. oktober 2003 - 08:40 #2
Så vidt jeg kan se tager funktion Plads() højde for din problematik med flere byer med samme placering.
Du skal blot sortere efter kolonnen med placering i stigende orden.
Avatar billede jkrons Professor
03. oktober 2003 - 08:44 #3
Plads() giver i sig selv byer med samme pointtal samme nummer, og den næste by det næste højere nummer. Så hvis du har Byerne i kolonne A, pointene i kolonne b:i, og sammentællingen i J, kan du bruge denne PLADS() formel i K: =PLADS(J1;$J$1:$J$151). Derfter sorterer du listen efter K-kolonnen.
Avatar billede h_s Forsker
03. oktober 2003 - 09:29 #4
Løsningen lyder ok, hvis det ikke var fordi vi vil have at rangeringen foregår automatisk, så jeg ikke skal ind og gøre noget selv. Årsagen er, at jeg har omkring 350 forskellige rangeringer!!!
Avatar billede lasseo Nybegynder
03. oktober 2003 - 09:41 #5
Det lyder som om der skal gang i macro'er, men jeg forstår ikke helt.
Har du 350 rankeringer i samme sheet?
Avatar billede jkrons Professor
03. oktober 2003 - 09:42 #6
Prøv evt med denne makro. Den kopierer et område fra Ark1 til Ark2, og sorterer det i Ark3. Ret selv eventuell cellereferencer.

Sub KopierOgSorter()
Sheets(1).Range("a1:c15").Copy
'    Range("A1:C5").Select
'    Selection.Copy
    Sheets("Ark2").Range("a1").Select
    ActiveSheet.Paste
        Range("C1").Select
        Range("A1:C15").Sort Key1:=Range("C1"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub
Avatar billede janvogt Praktikant
03. oktober 2003 - 09:56 #7
Det kan godt laves uden VBA.
Jeg har tidligere lavet noget tilsvarende i forbindelse med fodbold-/håndboldturneringer.

Men det er lidt kompliceret.
Skal jeg sende dig et eksempel?
Hvis du kan bruge det, skal jeg prøve at redegøre for fremgangsmåden her.
Avatar billede h_s Forsker
03. oktober 2003 - 10:17 #8
jkrons> Jeg har prøvet at ændre din makro så den passer til mit regneark. Jeg har følgende problemer/spørgsmål:
Hvad gør 3. linje: 'Range("A1:C5").Select?
Og jeg år en komplieringsfejl på 2. sidste linje: DataOption1:=xlSortNormal! Hvad kan årsagen være?
Avatar billede janvogt Praktikant
03. oktober 2003 - 10:23 #9
Jeg prøver at redegøre for fremgangsmåden her.
Prøv at indtaste følgende slavisk:

1) Skriv følgende i celle A1:A13
By
Esbjerg
København
Århus
Ålborg
Odense
Assens
Randers
Kolding
Vejle
Skagen
Padborg
Sønderborg

2) Skriv point i celle B1:B13
Point
56
89
14
6
89
6
67
64
82
12
63
49

3) I celle C2 beregnes nu pladsen med følgende formel:
=PLADS(B2;$B$2:$B$13;1)+(RÆKKE()/10000)
Rækken kopieres ned til og med C13.

4) I celle D2 skal vi igen bruge byen til et senere opslag.
Skriv =A2 og kopier cellen ned til og med D13

5) Og nu til selve resultattabellen. Indsæt følgende i celle F2 for at få sorteret resultaterne =MINDSTE($C$2:$C$13;RÆKKE()-1)
Kopier formlen ned til og med F13.

6) Så mangler vi bare opslaget, hvor vi overfører by-navnet:
I celle G2 skrives følgende: =LOPSLAG(F2;$C$2:$D$13;2;FALSK)
Kopier cellen ned til og med G13.

Håber du er med hele vejen :-)
Skriv evt. relevante overskrifter i række 1.
Avatar billede janvogt Praktikant
03. oktober 2003 - 10:25 #10
Fordelen ved en formel frem for VBA-kode er, at der ikke skal trykkes på en knap eller lignende, når tabellen skal opdateres.
Men det er selvfølgelig en smagssag.
Avatar billede h_s Forsker
03. oktober 2003 - 10:27 #11
janvogt>Jeg vil også hellere have at der ikke skal trykkes på en knap, så jeg prøver lige dit forslag!
Avatar billede janvogt Praktikant
03. oktober 2003 - 10:30 #12
Hov, jeg glemte at fortælle, at C-kolonnen og F-kolonnen skal formateres, så de kun viser heltal - altså uden decimaler.
Avatar billede janvogt Praktikant
03. oktober 2003 - 10:32 #13
Fint, det mener jeg også er at foretrække i denne situation, hvor du har mange rangeringer.
Avatar billede janvogt Praktikant
03. oktober 2003 - 10:35 #14
I mit eksempel vil der være to nr. 1 og to nr. 11 og derfor ingen nr. 2 og nr. 12.
Avatar billede h_s Forsker
03. oktober 2003 - 10:50 #15
janvogt>Det ser rigtig godt ud:-) Men hvad gør jeg for at få placeringsnummeret med?
Avatar billede janvogt Praktikant
03. oktober 2003 - 10:58 #16
Placeringsnummeret skulle gerne stå i kolonne F.
Husk at kolonne C og F skal formateres til kun at vise heltal.
Avatar billede janvogt Praktikant
03. oktober 2003 - 10:59 #17
Jeg kan evt. maile dig en elektronisk version af modellen, hvis du har problemer.
Avatar billede jkrons Professor
03. oktober 2003 - 11:29 #18
Jeg kan godt se at Jan's model ar simplere. Men for trods alt lige at svafre på dit spørgsmål, angiver 3. linie det område, der skal kopieres.

Kompileringsfejlen kan skyldes et linjeskift. Prøv skrive hele den foregående linje og denne ud i et. Det vises sikkert ikke rigtigt her.
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,  DataOption1:=xlSortNormal
Avatar billede jkrons Professor
03. oktober 2003 - 11:29 #19
Det skulle altså være en lang linie.
Avatar billede janvogt Praktikant
03. oktober 2003 - 11:30 #20
Jeg har lige lavet en forbedring af modellen.
Formlerne i D-kolonnen kan undlades (slettes).
Det kan nemlig godt lade sig gøre at lave et "omvendt" LOPSLAG, hvor resultat i opslagsformlen (her by-navnet) ligger til venstre for opslagsværdien.

Formlen i G2 skal så i stedet hedde:
=INDIREKE(ADRESSE(RÆKKE($C$2:$C$13)+SAMMENLIGN(F2;$C$2:$C$13;0)-1;KOLONNE(A:A)))
Formlen kopieres ned til og med G13.

Håber ikke forvirringen er ved at være for stor, men som sagt har jeg arket liggende til interesserede.
Avatar billede h_s Forsker
03. oktober 2003 - 12:19 #21
Janvogt>Den sidste kan jeg ikke få til at virke, men det andet virker også ok - Mange tak - Du har hjulpet mig endnu engang
Avatar billede janvogt Praktikant
03. oktober 2003 - 12:24 #22
Velbekomme :-)

Der er også en tyrkfejl i den sidste formel. INDIREKE = INDIREKTE.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB