30. august 2006 - 06:54Der 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!!
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").
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
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"...
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.
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
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?
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
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.