• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Rijen met criterium verwijderen middels VBA

Status
Niet open voor verdere reacties.

anton44

Verenigingslid
Lid geworden
20 mei 2005
Berichten
1.597
Rijen met dubbele informatie verwijderen.
Huidige methode duurt relatief lang bij groot aantal rijen (> 600)
Code:
Sub B06_Dubbelingen_VB()                                        'Dubbelingen markeren
02   Application.ScreenUpdating = False
04
06   ActiveWorkbook.Worksheets("Bank").Select
08   Range("AJ4").Copy Destination:=Range("AJ6:AJ" & [A1200].End(xlUp).Row)
10
12   'Dubbelingen verwijderen
14   ActiveWorkbook.Worksheets("Bank").Select
16   With Sheets("Bank")
18      For i = .UsedRange.Rows.Count To 1 Step -1
20         If IsNumeric(Left(.Cells(i, 36), 36)) Then             'de 36 staat voor de 36e kolom
22            If (.Cells(i, 36).Value) = 2 Then .Cells(i, 36).EntireRow.Delete
24         End If
26      Next
28   End With
30
32   Range("b3:b" & [A1200].End(xlUp).Row).Name = "Cellenbereik"
34   For Each cell In Range("Cellenbereik")
36      If cell = "" Then cell.Offset(, 1) = cell.Offset(, 5).Value
38   Next
40
42       Call Naar_Laatste_Regel
End Sub

In het voorbeeld heeft kolom AI een unieke code voor de regel (samengevoegd de journaaldatum en volgnummer) en wordt in kolom AJ een code gegenereerd voor enkel (1) of dubbele (2) vermelding.
De bedoeling is de rijen met 2 te verwijderen.

Gedachtegang:
Stap1. Formule kopiëren regel 8 niet vanaf AJ6 maar vanaf de laatste gevulde cel in AJ - dit rijnummer vastleggen voor stap2
Stap2. Zoeken van rijen met 2 (dubbele) niet vanaf AJ6 maar vanaf het eerder vastgelegde rijnummer in stap1
Stap3. Vastgelegd rijnummer stap1 wissen.
 

Bijlagen

  • Bankieren Voorb_ versie 4 2021.xlsm
    835,2 KB · Weergaven: 13
Dit is voldoende

Code:
Sub jvr()
 With Sheets("Bank").Range("A5", Sheets("Bank").Cells(Rows.Count, 1).End(xlUp)).Resize(, 36)
   .AutoFilter 36, 2
   .Offset(1).EntireRow.Delete
   .AutoFilter
 End With
End Sub
 
Bedankt en bijna goed.
De 1e lege rij zonder waarde 2 in AJ wordt ook weggehaald hetgeen niet mijn bedoeling is.
 
Zo dan? Met wat controle in de code verwerkt

Code:
Sub jvr()
 With Sheets("Bank").Range("A5:AJ" & Sheets("Bank").Cells(Rows.Count, 1).End(xlUp).Row)
   .AutoFilter 36, 2
    If .Offset(1).Resize(, 1).SpecialCells(12).Count > 1 Then .Offset(1).Resize(, 1).SpecialCells(2).EntireRow.Delete
   .AutoFilter
 End With
End Sub
 
Laatst bewerkt:
Dat is hem... grandioos. Bedankt :thumb:
Kun je in het kort uitleggen hoe deze code werkt / wat hij doet ? Zou fijn zijn voor het begrijpen.
 
Zie je nog een mogelijkheid voor een oplossing van mijn
Stap1. Formule kopiëren regel 8 niet vanaf AJ6 maar vanaf de laatste gevulde cel in AJ - dit rijnummer vastleggen voor stap2

Bovenstaand verzoek ingetrokken. dTime geeft aan dat daar nauwelijks tijdwinst te halen valt.

Wat vergelijkingen gemaakt met dTime en geconstateerd dat de onderstaande code in mijn werkmodel 10,5 sec tijd in beslag neemt.
Ik weet het weer :eek:
Sorry voor de verwarring.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan