30. maj 2018 - 13:12Der er
11 kommentarer og 1 løsning
Automatisk sortering af tal
hej er det muligt at lave en sortering af tal , mindst til størst i 2 kolonner da jeg ved det er muligt at gøre det med en kolonne .
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A:A")) Is Nothing Then Range("A:A").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End If End Sub mine kolonner er a+f mvh brian
Jeg ved ikke om jeg har forstået det korrekt, at kolonne A og F skal sorteres hver for sig, men hvis det er tilfældet, kan dette måske bruges:
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A:A,F:F")) Is Nothing Then If Target.Column = 1 Then Range("A:A").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=True, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Else Range("F:F").Sort Key1:=Range("F2"), Order1:=xlAscending, Header:=True, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End If End If End Sub
Jeg har rettet makroen til så den kun startes, når der skrives i cellerne B3:B29 eller F3:F29. Den sorterer stadig områderne B3:B29 og F3:f29 som to separate områder.
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("B3:B29,F3:F29")) Is Nothing Then If Target.Column = 2 Then Range("B3:B29").Sort Key1:=Range("B3"), Order1:=xlAscending, Header:=True, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Else Range("F3:F29").Sort Key1:=Range("F3"), Order1:=xlAscending, Header:=True, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End If End If End Sub
hej jens har lige et tillægs spørgsmål. tror du der er muligt at få kolonne d til at følge kolonne b og kolonne h til at følge kolonne f . så hvis et nr rykker ned følger tid med som er i kolonne d og h
Hvis det der står i kolonnerne C of G må følge med kan det gøres med:
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("B3:B29,F3:F29")) Is Nothing Then If Target.Column = 2 Then Range("B3:D29").Sort Key1:=Range("B3"), Order1:=xlAscending, Header:=True, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Else Range("F3:H29").Sort Key1:=Range("F3"), Order1:=xlAscending, Header:=True, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End If End If End Sub
Det ville have været lidt lettere, hvis du fra starten havde defineret hele din opgave, men prøv denne makro. Jeg kom lidt i tvivl om den reagerer rigtigt, hvis du skriver i celle B3 eller F3. Prøv det lige af. Det kan være at sorteringen skal sættes til header:=false.
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("B3:B29,F3:F29")) Is Nothing Then If Target.Column = 2 Then Range("B3:D29").Sort Key1:=Range("B3"), Order1:=xlAscending, Header:=True, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Else Range("F3:H29").Sort Key1:=Range("F3"), Order1:=xlAscending, Header:=True, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End If For x = 3 To 29 If Cells(x, 2) < Cells(x, 6) Then y = Cells(x, 2) Cells(x, 2) = Cells(x, 6) Cells(x, 6) = y End If Next End If End Sub
Nu ved jeg ikke med sikkerhed hvad der ikke byttes om på, men jeg gætter på at tiden ikke blev flyttet med. Det har jeg nu rettet i denne makro:
If Target.Column = 2 Then Range("B3:D29").Sort Key1:=Range("B3"), Order1:=xlAscending, Header:=False, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Else Range("F3:H29").Sort Key1:=Range("F3"), Order1:=xlAscending, Header:=False, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End If For x = 3 To 29 If Cells(x, 2) < Cells(x, 6) Then y = Cells(x, 2) Z = Cells(x, 4) Cells(x, 2) = Cells(x, 6) Cells(x, 4) = Cells(x, 8) Cells(x, 6) = y Cells(x, 8) = Z End If Next End If End Sub
hej jens , tiden var god nok den flyttede godt nok med i den macro du lavede i indlæg 7. problemet er hvis du forestiller dig at kolonnerne b+f ( 2 * 27) nummerer er en lang kolonne fra 1 til 54 og så kolonne b er fyldt op med tal 27 tal og jeg så taster et tal der er mindre i kolonne f en i kolonne b ,så skal tallet fra f flytte til b og det tal der var størst i b flytter til f
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.