06. december 2005 - 13:06Der 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?
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)
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"
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
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
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
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
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 :-)
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.
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)
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
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 :-)
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 :-(
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.