Avatar billede klausbobby Nybegynder
30. august 2006 - 06:54 Der er 11 kommentarer og
1 løsning

Automatisk sortering af tal

Er det muligt i Excel, at oprette en regel således, at nogle indtastede værdier automatisk bliver sorteret efter størrelse?
Har et regneark hvori jeg indtager en masse tal løbende. Jeg ønsker at disse tal automatisk bliver sorteret efter numerisk størrelse, så snart de er blevet indtastet!!

Er dettte muligt???
Avatar billede jkrons Professor
30. august 2006 - 08:59 #1
Hvis du skal bruge det i ark 1, kan du højreklikke på arkfanen for arket. Vælg Vis Programkode og kopier nedenstående:

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

Denen foretager en sortering, hver gang du taster et tal i a-kolonnen. Ret evt selv A til noget andet de to steder, hvor der står Range("A:A").
Avatar billede excelent Ekspert
30. august 2006 - 08:59 #2
hvis det er ok at de kopieres til en ekstra kolonne så

=største(a1:a100;række())

sæt ind i b1
og kopier ned
Avatar billede fobian Nybegynder
30. august 2006 - 09:00 #3
Ved hjælp af lidt VBA kan det godt lade sig gøre.
Kopier denne kode over i et macromodul i VBA og går over i excel og tast ALT+F8. Her kan du starte macroen. Der kommer en inputbox, som spørger om tallet du vil indtaste og indsætter det i celle A1 og sorterer derefter alle tallene i kolonne A faldende.
Er det noget i den stil?

Sub IndtastTal()
    Rows("1:1").Insert Shift:=xlDown
    Range("A1") = InputBox("Indtast nyt tal")
    Columns("A:A").Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortTextAsNumbers
End Sub
Avatar billede klausbobby Nybegynder
30. august 2006 - 11:03 #4
jkrons: Det virker på en kolonne, men hvis hvordan gør jeg, når jeg har værdier i flere kolonner?
Propgrammet skal først sortere efter kolonne B, derefter C og tilsidt E.
Værdierne i kolonne A, D og G skal nartuligvis "følge med"...
Avatar billede klausbobby Nybegynder
30. august 2006 - 11:49 #5
Det var måske en smule uoverskueligt det jeg skrev før. Her lige lidt mere uddybbende:
Jeg har værdier i kolonne A - B - C - D - E - F - G - H. Nå jeg indtaser mine værdier i disse kolonner, ønsker jeg det således, at programmet først sorterer efter B. Dernæst skal der sorteres efter C og tilsidst efter E. Værdierne i de andre kolonner skal følge med, så de altid bliver sammen med værdierne i "sorterings-kolonnerne".
jkrons forslag virkede i én kolonne (A), men ikke de andre kolonner (B-C-D-E-F-G-H) følger i det tilfælde ikke med.
Avatar billede jkrons Professor
30. august 2006 - 12:41 #6
Prøv med dette i stedet.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B:H")) Is Nothing Then
        Range("A:H").Sort Key1:=Range("B1"), Order1:=xlAscending, Key2:=Range( _
        "C1"), Order2:=xlAscending, Key3:=Range("D1"), Order3:=xlAscending, _
        Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
        xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
        DataOption3:=xlSortNormal
    End If
End Sub
Avatar billede jkrons Professor
30. august 2006 - 12:41 #7
Ret lige B1, C1 og D1 til B2, C2 og E2.
Avatar billede klausbobby Nybegynder
30. august 2006 - 15:24 #8
Det fungerer PERFEKT!!! Har dog lige et enkelt spørgsmål endnu;
Sorteringen skal først begynde ved celle 5, fordi celle 1-4 bruges til overskrifter!
Er dette muligt?
Avatar billede klausbobby Nybegynder
30. august 2006 - 15:49 #9
Altså ved B5 - C5 - E5 og derefter nedad af resten af arket.
Avatar billede jkrons Professor
30. august 2006 - 16:21 #10
Ret til:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B5:H65536")) Is Nothing Then
        Range("A5:H65536").Sort Key1:=Range("B5"), Order1:=xlAscending, Key2:=Range( _
        "C5"), Order2:=xlAscending, Key3:=Range("E5"), Order3:=xlAscending, _
        Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
        xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
        DataOption3:=xlSortNormal
    End If
End Sub
Avatar billede klausbobby Nybegynder
10. september 2006 - 16:16 #11
jkrons: Jeg takker mange gange. Post venligst et svar, så jeg kan give dig point!!!
Avatar billede jkrons Professor
10. september 2006 - 16:26 #12
Et svar :-)
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