Avatar billede kbonline Nybegynder
06. december 2005 - 13:06 Der er 19 kommentarer og
1 løsning

sorter ved tryk på kolonne overskrift

Jeg har et regneark hvor jeg har tastet en hel masse oplysninger ind vedr. salg af diverse produkter.
Der er flere kolonner, bl.a. dato, køber, pris.

Kan man leve en sortering af regnearket ved at man fx. bare trykker på en overskrift? istedet for at man skal markere hele rækken, og trykker på sorter i menubjælken. Den ville være lettere og virke mere proff. :-)

Det er vigtigt at alle rækker følges ad, så det er hele arket der bliver sorteret, og ikke kun den række som man trykker på. Det er blot den række det skal sortes efter.
Hvordan skal det gøres?
Avatar billede japping Nybegynder
06. december 2005 - 13:09 #1
Ja, du optager en macro og laver et link i en knap.

Ved du hvordan du optager en macro ?
Avatar billede kbonline Nybegynder
06. december 2005 - 13:10 #2
ups ... næææ :-)
Avatar billede japping Nybegynder
06. december 2005 - 13:15 #3
Ok, så vil jeg forsøge at hjælpe.

1) Vælg Tools - Macro - Record New macro
2) Klik Ok til det foreslåede navn
3) Der kommer nu et lille vindu frem
4) Sæt markøren på et af de felter du ønsker sorteret
5) Tryk Data - sort - og vælg sorteringsparametre for denne sortering (anden sortering kan optages i ny macro)
6) Når du har sorteret trykker du på "Stop" i det lille macro vindue under punkt 3)

Vend tilbage når dette er gjort.
Avatar billede kbonline Nybegynder
06. december 2005 - 13:19 #4
så langt så godt :-)
Avatar billede japping Nybegynder
06. december 2005 - 13:26 #5
Ok, så har du en macro der sorterer på én måde.

Nu skal du så have lagt den ind i en knap.

1) Vælg View - Toolbars - Forms
2) Et lille vindu kommer frem, tryk på knappen "Button"
3) Træk og slip musen over en område på dit excel-ark (der hvor du vil have knappen)
4) Højreklik på knappen og vælg "assign macro"
5) Vælg den macro du netop har optaget og derefter "ok"

Vend tilbage når du har gjort dette.
Avatar billede kbonline Nybegynder
06. december 2005 - 14:04 #6
puha min version er på DK, så jeg skulle lige lede lidt efter de rigtige navne :-)

Men så langt så godt...
Avatar billede japping Nybegynder
06. december 2005 - 14:12 #7
Jeg har lige et lille problem - øjeblik (10 min.)
Avatar billede bak Forsker
06. december 2005 - 14:19 #8
Højreklik på arkfanen, vælg View Code og indsæt denne kode
I dette tilfælde virker den på kolonne A:G, men det kan du selv tilrette


Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Intersect(Target, Range("A1:G1")) Is Nothing Then Exit Sub
    If Target.Cells.Count <> 1 Then Exit Sub
    Range("A1:G1000").Sort Key1:=Target.Offset(1, 0), Order1:=xlDescending, Header:= _
                          xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
Avatar billede japping Nybegynder
06. december 2005 - 14:38 #9
Se lige bort fra min kommentar kl. 13:26:00, vi gør det på en anden måde. Slet evt. knappen.

1) Vælg View - Toolbars - Customize
2) Vælf "New Menu" under "Categories" og TRÆK "New Menu" under "Commands" op til en af dine ikon-menuer (ikonerne over selve regnearket)
3) Højreklik på den nye "ikon-menu-knap" og vælg assign macro
4) Vælg din macro i den nue vindu og derefter "ok"
5) Hver gang du trykker på denne nye knap, vil din macro køre

Virker dette for dig ?

eller vil du hellere bruge forslaget fra bak ?
Avatar billede kbonline Nybegynder
06. december 2005 - 15:49 #10
Jeg prøver lige efter, men umilbart lyder det lettere, men hvad er fordele og ulemper ved de 2 forslag?

Hvis jeg skal prøve bak's forslag skal det så se sådan ud hvis alle rækker skal med:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Intersect(Target, Range("A1:B1:C1:D1:E1:F1:G1:H1:I1:J1:K1:L1:M1:N1:O1:P1:Q1")) Is Nothing Then Exit Sub
    If Target.Cells.Count <> 1 Then Exit Sub
    Range("A1:G1000").Sort Key1:=Target.Offset(1, 0), Order1:=xlDescending, Header:= _
                          xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub


eller er der fejl i det?
Avatar billede kbonline Nybegynder
06. december 2005 - 15:50 #11
Forresten er det vigtigt at række 1 ikke bliver flyttet, da overskrifterne står deri.
Avatar billede bak Forsker
06. december 2005 - 16:20 #12
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Intersect(Target, Range("A1:Q1")) Is Nothing Then Exit Sub
    If Target.Cells.Count <> 1 Then Exit Sub
    Range("A1:Q1000").Sort Key1:=Target.Offset(1, 0), Order1:=xlDescending, Header:= _
                          xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
Avatar billede kbonline Nybegynder
06. december 2005 - 23:38 #13
Jeg tror jeg bruger bak's løsning da den er lidt enklere at lave :-)
Men kan funktionen udvides til at når man trykker første gang, så skal den sortere a-z når man trykker igen, skal den sortere z-a ??

Kan man det?

Tillægs spørgsmål : hvis jeg skal sikre at den ikek sortere min overskrift line med, skal jeg så ændre :
Range("A1:Q1000").Sort Key1:=Target.Offset(1, 0), Order1:=xlDescending, Header:= _

til
Range("A2:Q1000").Sort Key1:=Target.Offset(1, 0), Order1:=xlDescending, Header:= _

Eller hvordan skal det gøres, jeg skal jo helst beholde min overskrift i toppen :-)
Avatar billede japping Nybegynder
06. december 2005 - 23:55 #14
Ja, du kan godt få den til at sortere skiftevis stigende og faldende. Dette link viser dig mulighederne ved sortering: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbaxl11/html/xlmthSort1_HV03076391.asp
Prøv at sætte Order1:=xlAscending

Når du har afprøvet dette kan du jo bare anvende en celle som f.eks. antager hhv. værdierne 1 og 0 afhængig af, sidste fortering. Vha. en If-sætning kan du så styre sortering og ændre cellens værdi.

Jeg lægger lige et svar da jeg forlader dette spørgsmål.
Avatar billede kbonline Nybegynder
07. december 2005 - 00:08 #15
Jeg fordobler lige point til 200, så i begge kan få 100 point.

Men jeg må indrømme at dette er lidt for langhåret til mig, så jeg håber der er en som vil være flink at lave den komplette kode for mig til at sortere skiftevis a-z og z-a ved tryk på række 1. Husk at række 1 IKKE må røres, da denne er "frosset" (emne linie)
Avatar billede bak Forsker
07. december 2005 - 09:31 #16
Public LastSort As Long

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Intersect(Target, Range("A1:Q1")) Is Nothing Then Exit Sub
    If Target.Cells.Count <> 1 Then Exit Sub
    If LastSort = 1 Then LastSort = 2 Else LastSort = 1
    Range("A1:Q1000").Sort Key1:=Target.Offset(1, 0), Order1:=LastSort, Header:= _
                          xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
Avatar billede kbonline Nybegynder
07. december 2005 - 13:36 #17
Perfekt - bak

Vil du lægge et svar, så du kan få dine velfortjente point :-)
Avatar billede bak Forsker
07. december 2005 - 14:24 #18
ok :-)
Avatar billede kbonline Nybegynder
12. december 2005 - 11:07 #19
Jeg har et lille ønske om forbedring af denne funktion, som jeg håber du måske kan hjælpe med også, det fungerer fint, men måske kan dette ønske også løses :-)

http://www.eksperten.dk/spm/671447
Avatar billede kbonline Nybegynder
12. december 2005 - 11:08 #20
ups - undskyld Japping, jeg kom vist til at glemme at give dig point, men kan du ikke lægge et svar i det andet spg. og henvise til dette, så skal jeg give dig når det er færdigt. sorry :-(
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