Jeg er kommet frem til følgende, men den sletter for meget (sletter alt hvor der ikke er en "-" i cellen, men ikke dem hvor der står et andet tal end 11 efter "-"?
'Slet alle data der ikke vedrører det valgte regnskabsår For I = 1 To DataEndRow If Mid(Range("A" & I), InStr(1, Range("A" & I), "-") + 1, 2) <> 11 Then StartSletRow = I For S = I To I + 25 If Range("A" & S).Value = "" Then SlutSletRow = S + 2 Exit For End If Next Rows(StartSletRow & ":" & SlutSletRow).Delete End If Next
Dim sidsteRæk As Long, ræk As Long, værdi, stregPos As Byte, slutRæk As Long Sub test2() sidsteRæk = ActiveCell.SpecialCells(xlLastCell).Row
For ræk = 1 To sidsteRæk værdi = Range("A" & ræk) If værdi = "" Then Exit For Else If testÅrstal(værdi) = False Then slutRæk = findAfslutÅrstal(ræk) Rows(ræk & ":" & slutRæk).Select Selection.Delete sidsteRæk = sidsteRæk - (slutRæk - ræk) + 1 ræk = ræk - 1 Else ræk = findAfslutÅrstal(ræk) End If End If Next ræk End Sub Private Function testÅrstal(værdi) If IsNumeric(Left(værdi, 2)) = True Then stregPos = InStr(værdi, "-") If stregPos > 0 Then If Mid(værdi, stregPos + 1, 2) <> 11 Then testÅrstal = False Else testÅrstal = True End If End If End If End Function Private Function findAfslutÅrstal(ræk) Dim r As Long For r = ræk To sidsteRæk If Range("A" & r) = "" Then findAfslutÅrstal = r + 1 Exit Function End If Next r
Tak Supertekst! Din løsning virker perfekt - lægger du et svar?
Løsningen blev: Dim sidsteRæk As Long, ræk As Long, værdi, stregPos As Byte, slutRæk As Long Sub testX() sidsteRæk = ActiveCell.SpecialCells(xlLastCell).Row
Application.ScreenUpdating = False
For ræk = 1 To sidsteRæk værdi = Range("A" & ræk) If værdi = "" Then Exit For Else If testÅrstal(værdi) = False Then slutRæk = findAfslutÅrstal(ræk) Rows(ræk & ":" & slutRæk).Select Selection.Delete sidsteRæk = sidsteRæk - (slutRæk - ræk) + 1 ræk = ræk - 1 Else ræk = findAfslutÅrstal(ræk) End If End If Next ræk
Application.ScreenUpdating = True End Sub Private Function testÅrstal(værdi) If IsNumeric(Left(værdi, 2)) = True Then stregPos = InStr(værdi, "-") If stregPos > 0 Then If Mid(værdi, stregPos + 1, 2) <> 11 Then testÅrstal = False Else testÅrstal = True End If End If End If End Function Private Function findAfslutÅrstal(ræk) Dim r As Long For r = ræk To sidsteRæk If Range("A" & r) = "" Then findAfslutÅrstal = r + 2 Exit Function End If Next r
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.