07. maj 2012 - 23:02
Der er
33 kommentarer og 1 løsning
Makro til at sortere række
Hej, Jeg har lavet en makro til at sortere alle mine indtastede værdier efter dato. Det fungere meget fint, men lige så snart jeg tilføjer flere rækker i mit regneark, så er disse ikke inkluderet i min makro, og bliver derfor ikke sorteret. Jeg kunne selvfølgelig markere alle rækker i regnearket når jeg laver min makro, men jeg har en bundlinje der tæller alle de indtastede værdier sammen, og denne bundlinje skal selvfølgelig ikke være inkluderet. Kan man på nogen måde måske markere det hele på nær én række ? Eller hvordan løser jeg denne ?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
Står der noget under bundlinjen?
Jeg har ikke noget kode, jeg har bare indspillet en makro på følgende måde: * 'Indspil ny makro' * Markeret alle rækker med indhold på nær bundlinjen * Sorteret efter dato * Makro slut Men lige så snart jeg tilføjer flere linjer i regnearket, er disse jo givetvis ikke inkluderet i min makro og bliver derfor heller ikke sorteret. Nej, der er ikke noget under bundlinjen.
Prøv på en kopi af dit ark:
Sub Makro2() On Error GoTo Slut home = ActiveCell.Address homeArk = ActiveSheet.Name Application.ScreenUpdating = False FørSidste = Range("A" & Rows.Count).End(xlUp).Offset(-1, 0).Row ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Add Key:=Range("A1"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Ark1").Sort .SetRange Range("A1:F" & FørSidste) 'ret F til sidste kolonne .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Sheets(homeArk).Select Range(home).Select GoTo Slut Slut: Application.ScreenUpdating = True End Sub
Kopier koden her over. Tryk alt+F11 Dobbelt klik på det Ark makroen skal virke på. Tryk ctrl+v og luk på det røde kryds. Tryk alt+F8 Vælg koden "Makro2" og tryk Afspil.
Husk: Svar (til løsninger og pointgivning) Er til løsninger og pointgivning, som der står? Du, som er spørger, skal bruger Kommentar.
Der sker stadig ingenting..
Hvor har du dine data? I makroen: A1 til f og ned -nederste. Skal måske tilpasses?
Dine datoer?
Ved ikke om denne virker med dit format?
Normal dato format: 08-05-2012
Sub Sorter() On Error GoTo Slut home = ActiveCell.Address homeArk = ActiveSheet.Name Application.ScreenUpdating = False FørSidste = Range("C" & Rows.Count).End(xlUp).Offset(-1, 0).Row ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Add Key:=Range("C9"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Ark1").Sort .SetRange Range("C9:J" & FørSidste) .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Sheets(homeArk).Select Range(home).Select GoTo Slut Slut: Application.ScreenUpdating = True End Sub
Står "Balance" i flettet celler?
Nej, den står ikke i en flettet celle.
Okay det er mærkeligt, jeg tror det virkede første gang. Lige pludselig var det hele sorteret, men nu kan jeg ikke få det til at virke igen :S
Nej, min fejl. Det virkede heller ikke første gang :-)
Hvordan ser din "tilføj" makro ud? Der skal værer indhold i C15
Min 'Tilføj' makro er den du hjalp mig med at lave forleden, så jeg kan tilføje ekstra rækker.. C15 er en flettet celle, hvis det har noget at sige.
Sådan ;-)
Sub Sorter() On Error GoTo Slut home = ActiveCell.Address homeArk = ActiveSheet.Name Application.ScreenUpdating = False FørSidste = Range("C" & Rows.Count).End(xlUp).Offset(-1, 0).Row ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Ark1").Sort.SortFields.Add Key:=Range("C9"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Ark1").Sort .SetRange Range("C9:J" & FørSidste) .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Sheets(homeArk).Select Range(home).Select GoTo Slut Slut: Application.ScreenUpdating = True End Sub Sub TilføjRækkeHer() On Error GoTo Slut home = ActiveCell.Address homeArk = ActiveSheet.Name Application.ScreenUpdating = False 'Vælg sidste række i tabel Range("C" & Rows.Count).End(xlUp).Offset(-1, 0).Select Rows(ActiveCell.Row).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Rows(ActiveCell.Row).Offset(-1, 0).Copy Rows(ActiveCell.Row).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Sheets(homeArk).Select Range(home).Select GoTo Slut Slut: Application.ScreenUpdating = True 'kald sorter makro Call Sorter End Sub
Se:
http://gupl.dk/679057/
Er det mig der er snotdum, eller er det fordi jeg bruger Office XP at det ikke virker ?
Sub Sorter() On Error GoTo Slut home = ActiveCell.Address homeArk = ActiveSheet.Name Application.ScreenUpdating = False FørSidste = Range("C" & Rows.Count).End(xlUp).Offset(-1, 0).Row Range("C9:J" & FørSidste).Select Selection.Sort Key1:=Range("C9"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Sheets(homeArk).Select Range(home).Select GoTo Slut Slut: Application.ScreenUpdating = True End Sub Sub TilføjRækkeHer() On Error GoTo Slut home = ActiveCell.Address homeArk = ActiveSheet.Name Application.ScreenUpdating = False 'Vælg sidste række i tabel Range("C" & Rows.Count).End(xlUp).Offset(-1, 0).Select Rows(ActiveCell.Row).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Rows(ActiveCell.Row).Offset(-1, 0).Copy Rows(ActiveCell.Row).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Sheets(homeArk).Select Range(home).Select GoTo Slut Slut: Application.ScreenUpdating = True 'kald sorter makro Call Sorter End Sub
Overstående virkede heller ikke i Excel 2003 :-( Så prøv lige denne, lavet i 2003, krydser fingre.
Compile Error Syntax error "Selection.Sort Key1:=Range("C9"), Order1:=xlAscending,"
Gør jeg noget forkert, eller det fordi jeg bruger Office XP ?
Nej, du gør vist ikke noget forkert. Det er fordi du har ExcelXP. Kan du "Indspille" en makro?
Prøv at indspille: Marker C9:J14 Data --> Sorter --> Sorter efter kolonne C --> Værdier --> Ældste først --> Ok Og kopier koden her ind.
Sub Sortere() ' ' Sortere Makro ' Makro indspillet 11-05-2012 af Victor ' ' Application.Goto Reference:="R9C3:R14C10" Selection.Sort Key1:=Range("C9"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End Sub
Sub Sorter() On Error GoTo Slut home = ActiveCell.Address homeArk = ActiveSheet.Name Application.ScreenUpdating = False FørSidste = Range("C" & Rows.Count).End(xlUp).Offset(-1, 0).Row Range("C9:J" & FørSidste).Select Selection.Sort Key1:=Range("C9"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Sheets(homeArk).Select Range(home).Select GoTo Slut Slut: Application.ScreenUpdating = True End Sub Sub TilføjRækkeHer() On Error GoTo Slut home = ActiveCell.Address homeArk = ActiveSheet.Name Application.ScreenUpdating = False 'Vælg sidste række i tabel Range("C" & Rows.Count).End(xlUp).Offset(-1, 0).Select Rows(ActiveCell.Row).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Rows(ActiveCell.Row).Offset(-1, 0).Copy Rows(ActiveCell.Row).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Sheets(homeArk).Select Range(home).Select GoTo Slut Slut: Application.ScreenUpdating = True 'kald sorter makro Call Sorter End Sub
Sub Sorter() On Error GoTo Slut home = ActiveCell.Address homeArk = ActiveSheet.Name Application.ScreenUpdating = False FørSidste = Range("C" & Rows.Count).End(xlUp).Offset(-1, 0).Row Range("C9:J" & FørSidste).Select Selection.Sort Key1:=Range("C9"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal Sheets(homeArk).Select Range(home).Select GoTo Slut Slut: Application.ScreenUpdating = True End Sub Sub TilføjRækkeHer() On Error GoTo Slut home = ActiveCell.Address homeArk = ActiveSheet.Name Application.ScreenUpdating = False 'Vælg sidste række i tabel Range("C" & Rows.Count).End(xlUp).Offset(-1, 0).Select Rows(ActiveCell.Row).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Rows(ActiveCell.Row).Offset(-1, 0).Copy Rows(ActiveCell.Row).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Sheets(homeArk).Select Range(home).Select GoTo Slut Slut: Application.ScreenUpdating = True 'kald sorter makro Call Sorter End Sub
Så virker det hele ! Tusind tak !
Velbekomme. Den virkede allerede i #21 Der var blot sket en fejl kopi/indsæt, der var et par linieskift der ikke skulle være der ;-)
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig