30. maj 2018 - 13:12 Der 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
30. maj 2018 - 13:34 #1
jkrons svarede på noget ligene i 2006
men syntes ikke jeg kan få det  til at passe med 2 kolonner.
https://www.computerworld.dk/eksperten/spm/729248
Avatar billede jens48 Ekspert
30. maj 2018 - 23:21 #2
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
01. juni 2018 - 19:42 #3
hej jens tak for hurtig svar kom til at skrive at det var  a+f det var b3 til b29 + f3 til f29 .
Avatar billede jens48 Ekspert
02. juni 2018 - 23:31 #4
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
03. juni 2018 - 19:19 #5
hej Jens super . det ser ud til at virke. tusind tak for hjælpen .
04. juni 2018 - 16:03 #6
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
Avatar billede jens48 Ekspert
04. juni 2018 - 16:15 #7
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
04. juni 2018 - 18:21 #8
super der var lige det jeg skal bruge . og hvis så man kunne sortere mindst til størst

på tværs af kolonne b + f så hvis der er et tal der er større i f end i b så bytter de plads
Avatar billede jens48 Ekspert
05. juni 2018 - 00:22 #9
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
05. juni 2018 - 18:42 #10
hej jens det virker ikke .har prøvet at rette header. med den bytter ikke rundt på dem som den skal . hvis du har tid må du meget gerne se på det .

https://www.dropbox.com/s/bfh6mr973gn2liv/18_04_29_-_MSC_Preziosa_6%20%284%29.xlsm?dl=0
Avatar billede jens48 Ekspert
05. juni 2018 - 23:36 #11
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
06. juni 2018 - 14:02 #12
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
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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