Avatar billede x-lars Novice
27. september 2009 - 15:58 Der er 5 kommentarer og
1 løsning

En hurtig lille makro: Fjerne rækker med "---"

Hej Xperter

Hvem har en hurtig løsning på dette:

I et Excel 2003-ark, find "---", marker hele denne række og de næste 14 rækker, slet rækkerne og fortsæt indtil der ikke er flere forekomster. ?

På forhånd tak for hjælpen.
Avatar billede excelent Ekspert
27. september 2009 - 16:47 #1
Sub Makro1()
On Error Resume Next
    Cells.Find(What:="---", After:=Range("A1"), LookIn:=xlFormulas, LookAt:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext).Activate
    Range("A" & ActiveCell.Row & ":A" & ActiveCell.Row + 14).EntireRow.Delete
    Cells.FindNext(After:=ActiveCell).Activate
While ActiveCell = "---"
    Range("A" & ActiveCell.Row & ":A" & ActiveCell.Row + 14).EntireRow.Delete
    Cells.FindNext(After:=ActiveCell).Activate
Wend
End Sub
Avatar billede x-lars Novice
27. september 2009 - 19:38 #2
Perfekt, Excelent!

Eneste problem er, at den skat starte omkring A30 og ikke vende tilbage til arkets top, når den har været igennem resten (ellers sletter den nemlig også listens topstykke!)
Avatar billede excelent Ekspert
27. september 2009 - 20:17 #3
prøv :

Sub Makro1()
On Error Resume Next
    Cells.Find(What:="---", After:=Range("A30"), LookIn:=xlFormulas, LookAt:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext).Activate
    Range("A" & ActiveCell.Row & ":A" & ActiveCell.Row + 14).EntireRow.Delete
    Cells.FindNext(After:=ActiveCell).Activate
While ActiveCell = "---"
    Range("A" & ActiveCell.Row & ":A" & ActiveCell.Row + 14).EntireRow.Delete
    Cells.FindNext(After:=ActiveCell).Activate
    If ActiveCell.Row < 30 Then End
Wend
End Sub
Avatar billede excelent Ekspert
27. september 2009 - 22:29 #4
anvend med denne

Sub Makro1()
On Error Resume Next
    Cells.Find(What:="---", After:=Range("A30"), LookIn:=xlFormulas, LookAt:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext).Activate
    If ActiveCell.Row < 30 Then End
    Range("A" & ActiveCell.Row & ":A" & ActiveCell.Row + 14).EntireRow.Delete
    Cells.FindNext(After:=ActiveCell).Activate
While ActiveCell = "---" And ActiveCell.Row > 30
    Range("A" & ActiveCell.Row & ":A" & ActiveCell.Row + 14).EntireRow.Delete
    Cells.FindNext(After:=ActiveCell).Activate
    If ActiveCell.Row < 30 Then End
Wend
End Sub
Avatar billede x-lars Novice
28. september 2009 - 08:21 #5
Smid et svar, Excelent! Den sidder lige i skabet, mange tak!
Avatar billede excelent Ekspert
28. september 2009 - 17:41 #6
velbekom
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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