Avatar billede mt1974 Nybegynder
12. oktober 2008 - 18:57 Der er 10 kommentarer og
1 løsning

Ultra simpel makro til sletning af rækker

Hej eksperter :-)

Jeg arbejder med et stort regneark (>50.000 rækker) som viser samtlige indkøbslinier i vores virksomhed.
Det er et simpelt ark, som i sin rå form ikke har nogen formler/funktioner, da det er data eksporteret fra en database.
Inden jeg udfører mine beregninger i arket, ønsker jeg at slette alle de rækker, hvor en celle i en bestemt kolonne (B) har en bestemt værdi. Værdien er bare rå tekst (ordet er "overfladebehandling").

Dette må kunne gøres super simpelt vha af en makro, men da jeg er helt grøn i Excel, håber jeg på lidt hjælp  :-)
Avatar billede zxa Nybegynder
12. oktober 2008 - 19:46 #1
Sub Slet()
Dim slut, i As Integer
slut = Range("B65000").End(xlUp).Row
For i = slut To 1 Step -1
Cells(i, 2).Select
If ActiveCell.Value = "overfladebehandling" Then
ActiveCell.EntireRow.Delete shift:=xlUp
End If
Next
End Sub

Jeg håber at den kan bruges
Avatar billede kabbak Professor
12. oktober 2008 - 20:00 #2
Her er min kode, bemærk, hvis du har tomme celler i B kolonnen i forvejen, dur den ikke.


Public Sub Fjern_Overfladebehandling()
' jeg udskifter "overfladebehandling" med ""
    Columns("B:B").Replace What:="overfladebehandling", Replacement:="", LookAt:= _
                          xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                          ReplaceFormat:=False
                         
    ' Her slettes rækker der har tomme celler i kolonne B
    Range("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Avatar billede mt1974 Nybegynder
12. oktober 2008 - 20:02 #3
1000 tak, men desværre virker den ikke.
Jeg får følgende fejl-meddelelse:
Run-time Error '6':
Overflow

hvis jeg klikker på "debug" er følgende linie fremhævet med gult:
For i = slut To 1 Step -1

Er der en fejl i VBA scriptet ?
Avatar billede kabbak Professor
12. oktober 2008 - 20:04 #4
Dim slut, i As Integer
skal så være

Dim slut, i As Long
Avatar billede kabbak Professor
12. oktober 2008 - 20:05 #5
Dim slut, i As Integer
skal være

Dim slut as long, i As long
Avatar billede kabbak Professor
12. oktober 2008 - 20:07 #6
Integer har begrænsning

Integer variables are stored as 16-bit (2-byte) numbers ranging in value from -32,768 to 32,767.
Avatar billede mt1974 Nybegynder
12. oktober 2008 - 20:07 #7
Mit første svar var til zxa....
Til kabbak: NICE det ser ud til at fungere....mange tak.
Avatar billede kabbak Professor
12. oktober 2008 - 20:10 #8
jeg viste godt det var til Zxa, det var bare for at hjælpe.

Jeg er ikke i tvivl om at zxa's kode kunne køre, når der blev dimmet rigtig, men den ville være langsom, hvis der var mange rækker, der skulle slettes.

Jeg ligger et svar, hvis Min kode kunne bruges.
Avatar billede kabbak Professor
12. oktober 2008 - 20:10 #9
;-))
Avatar billede mt1974 Nybegynder
12. oktober 2008 - 21:35 #10
Endnu en gang tak. Har leget lidt med det, og tilføjet flere parametetre jeg vil slette, og det spiller bare :-)
Avatar billede kabbak Professor
12. oktober 2008 - 21:37 #11
husk at lukke spørgsmålet
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