Avatar billede s_h_m Nybegynder
23. februar 2003 - 18:51 Der er 12 kommentarer og
2 løsninger

Sorterings-makro på stigende antal rækker

Jeg har 5 kolonner med data, jeg gerne vil have sorteret.
Af hensyn til andre brugere, vil jeg lave en knap der hurtigt og enkelt sortere pågældende data.
Antallet af rækker er ikke permanent, det stiger med tiden, men ikke nødvendigvis med samme antal hver gang.

Hvis jeg indspiller en makro, er jeg nødt til at fremhæve det område, jeg vil sortere, og det stiger jo, så derfor...

Jeg ønsker en sorterings-makro, der kun sorterer på de rækker, der indeholder data, men hvordan?
Avatar billede sjap Praktikant
23. februar 2003 - 19:29 #1
Kan du ikke blot vælge hele kolonnen - altså trykke på kolonneoverskrifterne, når du optager makroen?

så får du noget der ligner det her når du optager en almindelig sortering:

    Columns("A:E").Select
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Avatar billede s_h_m Nybegynder
23. februar 2003 - 20:26 #2
Nej desværre, for de første 4 rækker skal ikke sorteres med, da de indeholder diverse tekst (ikke kun kolonneoverskrifter).
Jeg kan selvfølgelig prøve med følgende:

Columns("A5:E5000).Select

så går der noget tid inden området bliver fyldt, men det optimale vil være, at excel selv finder de celler der indeholder data.

Jeg prøver med ovenstående, men lader lige spørgsmålet hænge lidt.
Avatar billede sjap Praktikant
23. februar 2003 - 20:42 #3
Problemet er selvfølgelig de fire rækker. En ændring i ovenstående sortering fra  Header:=xlGuess  til  Header:=xlYes  ville medføre at den første række ikke ville blive medtaget. Der er ikke nogen indstilling til de første fire rækker, så dit eget forslag er en udmærket ide.
Avatar billede sjap Praktikant
23. februar 2003 - 20:57 #4
Kan det her ikke bruges? Det skal ind i koden før sorteringsfunktionen

    x = ActiveSheet.UsedRange.Rows.Count
    Range("A5:E" & x).Select
Avatar billede kabbak Professor
23. februar 2003 - 21:03 #5
Sub Sorter()

    Range("A4:E" & ActiveCell.SpecialCells(xlLastCell).Row).Select
   
  Selection.Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
Avatar billede kabbak Professor
23. februar 2003 - 21:06 #6
Hov, ret lige A4 til A5, så ikke lige at det var de første 4 der ikke skulle med.
Avatar billede s_h_m Nybegynder
23. februar 2003 - 21:13 #7
Perfekt.
(jeg havde fanget den med A4 -> A5)

I må deles om pointene.
Det første svar var absolut brugbart, og det sidste lige det jeg ønskede.
Håber det er OK.

Mange tak for hjælpen :-)
Avatar billede kabbak Professor
23. februar 2003 - 21:18 #8
Selv tak ;o)
Avatar billede sjap Praktikant
23. februar 2003 - 21:22 #9
Ikke fordi jeg vil anfægte kabbaks svar; men hvori ligger forskellen? De to løsninger giver så vidt jeg kan se præcis det samme resultat, og forskellen er ikke så stor, så hvor er det lige det "ønskede" kommer ind.

Jeg spørger blot fordi, jeg ikke ved hvad forskellen på de to kald er - og et af de væsentligste formål med at deltage her er at lære.
Avatar billede s_h_m Nybegynder
23. februar 2003 - 21:34 #10
superjap ->OK, min fejl.
Med det første svar, mente jeg det allerførste.
Og du har ret i, at meningen er at lære, så jeg vil selvfølgelig straks rette  min fejl.
Avatar billede kabbak Professor
23. februar 2003 - 21:37 #11
Superjap > det er rigtig at  "x = ActiveSheet.UsedRange.Rows.Count" er det samme som "ActiveCell.SpecialCells(xlLastCell).Row".

Bortset fra en ting, som i dette tilfælde er uden betydning.

"ActiveCell.SpecialCells(xlLastCell).Row" finder den sidste brugte række.

"x = ActiveSheet.UsedRange.Rows.Count" finder antal rækker mellem første data og sidste data, så hvis der er ubrugte rækker i toppen tælles de ikke med.

Kabbak
Avatar billede s_h_m Nybegynder
23. februar 2003 - 21:42 #12
Så fik jeg også lært lidt der :-)
Men begge løsninger er tæt på at være identiske, så superjap fortjener ekstra point.
Derfor se nyt spm.
Avatar billede sjap Praktikant
23. februar 2003 - 21:46 #13
Tak for forklaringen - tænkte nok der måtte være en eller anden lille forskel :-)
Avatar billede kabbak Professor
23. februar 2003 - 21:46 #14
Yes, superjap har fortjent dem.
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

IT-JOB

Kræftens Bekæmpelse

IT-driftsleder

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Senior projektkonsulent til program Digital og Operativ Transformation

Forsvarsministeriets Materiel- og Indkøbsstyrelse

SAP-medarbejder til Roller & Autorisationer i Forsvarets Cyberdivision

Forsvarets Efterretningstjeneste

Linux Infrastructure Specialist