02. december 2004 - 13:50Der er
15 kommentarer og 1 løsning
Sortering efter farve på tal
Jeg har et større regneark, hvor en kolonne består af tal, sorte og røde. Er det muligt at sortere rækkerne med de røde tal ud for sig selv? Hvis ja: Hvordan?
eller du kan bruge denne brugerdefinerede funktion i en kolonne ved siden af.. Indsæt funktionen i et Alm. modul. Den returnerer farvekoden for font og den kan du sortere på.
Function Farve(Celle) If Celle.Cells.Count = 1 Then Farve = Celle.Font.ColorIndex Else Farve = CVErr(xlErrNA) End If End Function
Her har du en macro, som kan adskille de røde fra de sorte tal. Det den gør er at den kigger i den kolonne som er angivet i linien "SorterKolonne = "F"" Du kan bare rette bogstavet så det passer til den kolonne du har dine tal i. Macroen gennemsøger tallene fra oven og når den finder et tal, som står med rødt sletter den hele rækken og indsætter den i række 2. På den måde bliver række 2 hele tiden skubbet nedad når der kommer et nyt rødt tal. Når macroen er færdig vil alle de røde tal stå øverst på dit ark. Jeg har indbygget en sortering, så de røde tal står i stigende rækkefølge. Hvis du ikke vil have den sortering med skal du bare slette linien "Sorter (SorterKolonne)" Sorteringen sker på kolonne A til den kolonne du har angivet - det kan tilrettes, hvis dit ark ser anderledes ud.
Gør som i den forrige kommentar med at taste Alt+F11 indsæt et modul og kopier denne kode ind i modulet. Du skal derefter stille dig i det ark som skal sorteres og derfra afspille macroen. tast Alt+F8 og vælg Sorterfarver og Afspil, så skulle det virke :o)
Public Sub SorterFarver() Dim i As Long Dim SorterKolonne As String SorterKolonne = "F"
Sorter (SorterKolonne)
For i = 2 To Range(SorterKolonne & "65536").End(xlUp).Row If Range(SorterKolonne & i).Font.ColorIndex = 3 And i > 2 Then Range(SorterKolonne & i).EntireRow.Cut Rows("2").Select Selection.Insert Shift:=xlDown End If Next End Sub
Private Sub Sorter(ByVal SorterKolonne As String) Columns("A:" & SorterKolonne).Select Range(SorterKolonne & "1").Activate Selection.Sort Key1:=Range(SorterKolonne & "2"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom End Sub
fobian Det virker! Næsten perfekt: For 1. række, som har sorte tal, bliver stående øverst efterfulgt af alle de røde sorteret stigende. Ikke noget problem, men alligevel: Hvorfor?
Jeg gik ud fra at række 1 i dit ark var en overskrift. Derfor gør macroen ikke noget ved den 1. række. Jeg har lige tilrettet macroen, så den nu har 1. række med:
Public Sub SorterFarver() Dim i As Long Dim SorterKolonne As String SorterKolonne = "F"
Sorter (SorterKolonne)
For i = 1 To Range(SorterKolonne & "65536").End(xlUp).Row If Range(SorterKolonne & i).Font.ColorIndex = 3 And i > 1 Then Range(SorterKolonne & i).EntireRow.Cut Rows("1").Select Selection.Insert Shift:=xlDown End If Next End Sub
Private Sub Sorter(ByVal SorterKolonne As String) Columns("A:" & SorterKolonne).Select Selection.Sort Key1:=Range(SorterKolonne & "1"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom End Sub
Det fungerede flot før, som sagt, og nu er det bare perfekt!
Tak for hjælp.
Hilsen KOL
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.