• 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.

Regels filteren die indentiek zijn

  • Onderwerp starter Onderwerp starter rob91
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

rob91

Gebruiker
Lid geworden
10 okt 2008
Berichten
192
Hallo,

Ik worstel met een probleem om regels uit een bestand te filteren, die voldoen aan bepaalde voorwaarden.

Wij houden bij hoeveel pallets er naar een klant gaan en als wij deze terug krijgen boeken wij deze negatief, zodat we het saldo kunnen bijhouden.
Nu zouden we graag de regels van de levering (leveringsbonnrs beginnend met 80..... en retourlevering beginnend met 84... die in kolom bestelnr hetzelfde leveringsnummer hebben EN waarbij het palletsom nul is uit de lijst filteren

Voorbeeld:
Regel 5 worden 2 pallets geleverd en deze worden op regel 7 weer retour geboekt met als referentie het bonnummer waarop ze retour genomen zijn. Saldo dus nul

Dus als rechts(B7;8) = gelijk aan vertikaal zoeken (kolom a) en hvh in E7 = hvh (vertikaal zoeken (kolom a)); dan filter deze beide regels.

Wie weet hoe ik dit voor elkaar krijg???

Rob
 

Bijlagen

Vorig bestand was niet helemaal correct en is aangepast.
Voor resultaat zie blad na filtering



Groet
 

Bijlagen

Laatst bewerkt:
Hallo Joost1,

Met jouw oplossing kan ik wel zien of de retour gelijk is aan de levering, maar de bedoeling is
om daarna als dat zo is de regel van de levering en de bijbehorende retour eruit te filteren, zodat ik
minder regels overhoud.
Dus in mijn voorbeeld zou dus regel 5 en regel 7 eruit gefilterd moeten worden.

gr
Rob
 
Hoi Timshel,

Dat zou inderdaad de oplossing zijn indien er in kolom b alleen bonnummers zouden staan, maar bij de leveringen staan daar ook wel
ordernummers van de klant in of de naam van degene die bestelde.
Dus dan lukt het niet om te werken met : indien leeg dan getal uit kolom A.
Het zou zo moeten zijn dat als kolom A begint met 80 dan dat getal in kolom G en anders de laatste 8 cijfers uit kolom B.
Maar hoe zet ik dat in de formule?

gr Rob
 

Bijlagen

in G2:
Code:
=ALS.FOUT(ALS(LINKS(A2;2)="80";A2;WAARDE(RIGHT(B2;8)));A2)
Er zit foutafhandeling in de formule voor leveringsnummers beginnend met 84, waarbij kolom B leeg is.
 
Gaat volgens mij niet goed Joost.
Regel 5 én 7 zouden moeten worden uitgefilterd. In jouw oplossing levert alleen regel 7 een 0 op in kolom H.
 
Thimshel,

Zo had ik het niet begrepen. Maar ik zie nu dat zowel regel 5 als regel 7 eruit gefilterd moeten worden. Bedankt voor je reactie.

Groet
 
Met een beetje code

Code:
Sub VenA()
With Blad1
    If .AutoFilterMode Then .AutoFilterMode = False
    ar = .Cells(1).CurrentRegion
    ReDim Ar1(1 To UBound(ar))
    Ar1(1) = "Retour"
    For j = 2 To UBound(ar)
        For jj = 2 To UBound(ar)
            If InStr(1, ar(jj, 2), ar(j, 1)) And ar(j, 5) + ar(jj, 5) = 0 Then
                Ar1(j) = "Ja"
                Ar1(jj) = "Ja"
            End If
        Next jj
    Next j
    .[G1].Resize(UBound(Ar1)) = Application.Transpose(Ar1)
    .Cells(1).CurrentRegion.AutoFilter 7, "="
End With
End Sub
 

Bijlagen

Hoi Timshel,

Bedankt voor je formule, maar het gaat nog niet goed want ik zie nu ook 84nummers in kolom G en dat is niet goed.



Het voorbeeld van VenA via code werkt wel, maar kan ik die ook toepassen als er meer kolommen zijn???
In het echte bestand is het leveringsnummer dus niet de eerste kolom.

gr,
Rob
 
of

Code:
Sub M_snb()
  sn = [transpose(If(A1:A200="","","~" & A1:A200&"_"&B1:B200&"|"&E1:E200&"|"&row(A1:A200)))]
    
  sp = Filter(sn, "~80")
  sq = Filter(sn, "~84")
    
  For j = 0 To UBound(sp)
    st = Filter(sq, Mid(sp(j), 2, 8))
    If UBound(st) > -1 Then If Val(Split(sp(j), "|")(1)) + Val(Split(st(0), "|")(1)) = 0 Then c00 = c00 & "_" & Split(sp(j), "|")(2) & "_" & Split(st(0), "|")(2)
  Next

  sr = Split(Mid(c00, 2), "_")
  For j = UBound(sn) To 0 Step -1
    Rows(j).Delete
  Next
End Sub
 
Bedankt voor je formule, maar het gaat nog niet goed want ik zie nu ook 84nummers in kolom G en dat is niet goed.
Volgens mij is het helemaal niet van belang wat in kolom G staat. Je kunt filteren op nulwaarden in kolom H.
Je kunt bovendien zelf ook nog nadenken in plaats van het je allemaal te laten nadragen.
 
Even als aanvulling op de terechte opmerking van Timshel.

Formules en of code worden gemaakt obv een vraag of een voorbeeldbestandje. Als dit niet strookt met het werkelijke bestand dan is het aan jou om het aan te passen naar jouw eigen bestand. De oplossingen staan er en het is nu aan jou om het toe te passen in het 'echte' bestand. Zowel de code van snb als die van mij gaan uit van waarden in kolom A, B en E. Als dit anders is dan zal je de code aan moeten passen. Of als dat niet lukt een voorbeeld plaatsen met hoe het werkelijk in elkaar steekt.
 
Sorrie allemaal, ik probeerde het voorbeeldbestand eenvoudig te houden, maar dat werkt nu tegen mij.

Ik ga wel proberen of ik het om kan bouwen naar het originele bestand.
Bedankt zover!

rob
 
Hallo VenA,

Ik heb het voor elkaar dat je code het doet op mijn origineel werkblad.(met meer kolommen)
Maar het werkt alleen als ik de code in een module plaats in het betreffende werkblad en niet vanuit mijn persoonlijke map.
Aangezien het steeds om een ander werkblad gaat, is dat iets wat omslachtig.

Als ik de macro activeer stopt deze op de code:

ReDim Ar1(1 To UBound(ar))

Wat gaat er nog mis?

gr, Rob
 

Bijlagen

Het stoort mij dat je nu nog aan komt zetten dat je een oplossing zoekt voor meerdere werkbladen. Dan ligt een oplossing met formules niet voor de hand.
Had je dat gelijk vermeld, dan had ik mij de moeite kunnen besparen.
Er wordt hier maatwerk geleverd, gratis en voor niks. Het minste wat je kunt doen is volledige en accurate informatie verstrekken.
 
Als een code ergens stopt dan krijg je toch een melding met wat er mis is? Met <F8> kan je door de de code wandelen om te zien welke variabele welke waarde krijgt. Als de Redim een fout oplevert, zal ar wel leeg zijn. ReDim Ar1(1 To leeg) gaat niet werken. Hoe je de code aanroept heb je er ook niet bij staan.

Ipv
Code:
With Blad1
kan je
Code:
 With ActiveSheet
proberen.

Je hebt nu ook ineens een stuk code staan die een kolom gaat splitsen. Haal alle selects en selections eruit. Dit maakt het onnodig traag. Om kolom J te verwijderen is
Code:
Columns("J:J").delete
voldoende.
 
Laatst bewerkt:
Excuus VenA,

Ik heb geheel geen verstand van VBA dus heb ik gezocht waar je de kolommen aanriep in de code en deze aangepast.
Daar ik het probleem had, dat na uitvoeren van de code de kolom met de aantallen weg was en vervangen door een kolom 'Retour' heb ik eerst de hoeveelheden naar een andere kolom gekopieerd en verder overbodige kolommen eruit gehaald.
Dit heb ik via een makro opgenomen en erin geplakt.
Veel geknutsel, maar in het commentaar stond dat ik meer zelf moest proberen op te lossen en dat heb ik dus gedaan.
De VBA-code roep ik via een makro aan (Alt-F8)

gr
Rob
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan