Hej Eksperter Jeg har en udfordring med Excel. Jeg vil automatisk angive en rangering mellem 1 og 50 Men pladserne i rangeringen skifter konstant. Derfor søger jeg en løsning som automatisk rykker tallet videre. Ex. 1. Emil 2. Kasper 3. Jesper Så vinder Jesper over Emil og skal dermed være nr. 1. Emil nr. 2 og Kasper nr. 3. Der skal også tages højde for, at en deltager skal kunne rykke fra 3. til 2. pladsen. Kan Excel automatisk skubbe tallene videre til næste navn? På forhånd tak.
Hvis vi antager, at du har Emil, Kasper og Jesper i B1, B2 og B3 og de point, der udløser placeringen i C1, C2 og C3 og gerne vil have rangeringen til at stå i A1 til A3, så indsæt denne formel:
=PLADS(C1;$C$1:$C$3)
og kopier ned. Hvis de også skal sorteres når placeringerne skifter, skal du enten gøre det manuelt eller vha VBA.
Hvis du vil automatisere, så der sorteres når placeringen ændres, kan du lægge denne kode på kodearket for det pågældende ark:
Private Sub Worksheet_Change(ByVal Target As Range) ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Add Key:=Range("A2"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Ark1").Sort .SetRange Range("A2:C51") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
Mange tak for dit svar. Det er dog ikke det jeg leder efter. Jeg ønsker en løsning hvor jeg i en celle kun taster 1, 2 eller 3 osv. Og at excel selv rykker talrækken dvs. at den autoudfylder de næste pladser. A2 = Placering 1 A3 = Placering 2 B2 = Jesper B3 = Emil
Det kan også beskrives som en top 100 over musik, når der lander et track som er bedre end nr. 5, overtager det nye track 5. pladsen og, 5. pladsen bliver automatisk rykket til 6. pladsen og 6. pladsen til 7. pladsen osv.
Nej :) Sorry, Det var en urigtig sammenligning. Kolonne A er placering, så A2 er "førstepladsen" A3 er "andenpladsen osv. Kolonne B er navnet på deltageren. B2-Emil B3-Jesper osv. Jeg vil kunne ændre tallet i kolonne A, ud fra Jesper, som placerer ham i kronologisk rækkefølge på den rigtige plads. Lad os sige, jesper kommer ind som nr. 25, så rykker den selv nr. 25, til 26. pladsen osv.
VBA er løsningen. Jeg vll gerne se på det, men har først tid i morgen. Du kan ikke bruge en formel i A kollen, da du jo overskriver formlen, når du taster en ny placering.
Så tror jeg den er næsten hjemme. "With a little help from my friends" ude i den store verden, er jeg nået frem til nedenstående kode. Den kræver dog en hjælpekolonne, her har jeg brug C-kolonnen, hvor du skal skrive ny placering for at givent navn. Når du trykker enter til det nye nummer, vil de øvrige numre blive renummereret og A-kolonnen sorteret efter den nye rækkefølge. Funktionen har dog en enkelt skavank, som jeg simpelthen ikke kan få styr på. Den virker kun korrekt, hvis et navn får et lavere nummer - altså skal rykke placeringen op. Skal et navn rykke placeringer ned går det ikke helt efter hensigten. Men altså A B C 1 Jens 2 Ole 3 Viggo 4 Max 5 Børge 2 6 Helmer
Når du trykket Enter efter at have tastet 2-talleti i kolonne C kommer listen til at se således ud:
A B C 1 Jens 2 Børge 3 Ole 4 Viggo 5 Max 6 Helmer
Tallet, du skrev i c-kolonnen slettes automatisk. Og her er koden, som skal placweres i arkets kodeark. Har du omdøbt dit ark, skal du selvfølgelig ændre "Ark1" til det relevante.
Private Sub Worksheet_Change(ByVal Target As Range) Dim rngC As Range Dim LRow As Long Application.ScreenUpdating = False If Intersect(Target, Range("C2:C501")) Is Nothing _ Or Target.Count > 1 Then Exit Sub If Target.Value = "" Then Exit Sub
LRow = Cells(Rows.Count, 2).End(xlUp).Row For Each rngC In Range("A2:A" & LRow) If rngC >= Target And rngC < Target.Offset(, -2) Then rngC = rngC + 1 End If Next Target.Offset(, -2) = Target ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Add Key:=Range("A2"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Ark1").Sort .SetRange Range("A2:B500") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Application.EnableEvents = False Range("c2:c501").ClearContents Application.EnableEvents = True Application.ScreenUpdating = False End Sub
Beklager at den den ikke viser min struktur, men det er nok til at finde ud af. Skal området være større eller mindre end 500 rækker, kan du selv ændre de relevante steder, og ligeledes hvis du vil bruge en anden kolonne end C som hjælpekolonnen, hvor du taster.
Synes godt om
Ny brugerNybegynder
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.