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

Tabblad 1 zuiveren met uitsluitingen op tabblad 2

Status
Niet open voor verdere reacties.

gvanwijk

Gebruiker
Lid geworden
3 mei 2018
Berichten
182
Kan er iemand mij helpen om dit voor elkaar te krijgen (zie bijlage)?

Tabblad 1: overzicht alle soorten = variabele lijst van max. 10.000 soorten
Tabblad 2: overzicht geslachten die uitgesloten moeten worden (uitsluitingen) = variabele lijst van max. 100 geslachten

Tabblad 3 moet dan het volgende resultaat geven:
1. de soorten uit tabblad 1 rekening houdend met de uit te sluiten geslachten op tabblad 2
2. een doorlopende lijst, zonder dat er tussendoor lege cellen staan

Eventueel noodzakelijke hulpkolommen geen probleem

P.S. Geslacht = 1e deel van de plantnaam (voor de 1e spatie), bijv. Acanthus
Soorten zijn dan bijv. Acanthus mollis, Acanthus mollis 'Latifolius' etc.
 

Bijlagen

  • Uitsluitingen.xlsx
    187,4 KB · Weergaven: 21
hallo van Wijk, wat betreft die uitsluitingen, zijn dat altijd de complete plantnamen of,
moeten ook de plantnamen die bvb Aloe bevatten uitgesloten worden?
 
Ik wil de plantnamen in tabblad 1 uitsluiten op basis van de geslachtsnaam op tabblad 2 (dus niet alle plantnamen uitsluiten waar bijv. aloe in voorkomt)

Dus als op tabblad 1 bijv 10 soorten Agapanthus staan en op tabblad 2 staat Agapanthus als uitsluiting dan mag op tabblad 3 geen enkele Agapanthus soort als resultaat komen
 
Laatst bewerkt:
vind je het goed als er 2 tabellen van gemaakt worden? dus de hoofdtabel en de excusief tabel?
 
Vind alles goed als ik als resultaat in ieder geval maar de opgeschoonde lijst te zien krijg Zou mooi zijn!
 
Code:
Sub hsv()
Dim sq, sv, st, i As Long, s0 As String
sq = "|" & Join(Application.Transpose(Sheets("uitsluiten").Range("b6").CurrentRegion.Columns(1)), "|") & "|"
sv = Sheets("voorraad").Range("b4").CurrentRegion
  For i = 1 To UBound(sv)
     If InStr(sq, "|" & Split(sv(i, 1))(0) & "|") = 0 Then s0 = s0 & i & " "
  Next i
    If s0 <> "" Then
      st = Application.Transpose(Split(Trim(s0)))
        With Sheets("verkoop").Range("b5")
          .CurrentRegion.Offset(1).ClearContents
          .Resize(UBound(st)) = Application.Index(sv, st, 0)
        End With
    End If
End Sub
 
@ HSV
Te vroeg gejuicht helaas. Ik liep nog even de resultaten na in het 3e tabblad, maar daar komen ook alle soorten in voor die uitgesloten hadden moeten worden. Kijk bv naar het geslacht Acorus in tabblad 1: daar zijn 5 soorten van; in tabblad 2 staat ie bij de "Uitsluitingen" maar alle 5 komen ze in tabblad 3 terecht. Heb je macro in bijgaand bestand staan
 

Bijlagen

  • Uitsluitingen.xlsm
    212,6 KB · Weergaven: 8
@ HSV, sorry ik zit te klooien -> hij doet 't wel, ik werkte met de verkeerde lijst...Nogmaals, dank je!
 
Leuk voorbeeld waarin niets voldoet aan hetgeen je wil uitsluiten.

Met Power Query is het een fluitje van een cent.
 

Bijlagen

  • Uitsluitingen (1).xlsx
    216,5 KB · Weergaven: 9
@VenA
Klopt, zie mijn opmerking boven die van jou: ik had de verkeerde lijst gebruikt op het 1e tabblad, excuus. Ik zal morgen jouw oplossing ‘s bekijken, bedankt. Maar die van HSV werkt ook als fluitje van een cent
 
Ook het nieuwe bestand klopt niet.... Plaats in het vervolg eenvoudige voorbeelden met zaken die wel kloppen om de vraag ondersteunen. Zie ook alle vragen van @sylvester-ponte
 
@ HSV

Toch nog even een vraag. Jouw code werkt prima als op het 2e tabblad namen staan zonder spatie (werkt heel super, bedankt daarvoor!), maar niet als er een spatie staat. Ik heb de voorbeelden wat vereenvoudigd.
Voorbeeld 1 is in feite mijn oude vraag in wat simpelere uitleg -> code werkt perfect
Voorbeeld 2: nu bij uitsluitingen (tab B) dubbele namen, dus met spatie: dan werkt de code niet
Mijn vraag: hoe luidt de code in dat geval, kun je het verschil in rood aangeven hieronder? Zou fijn zijn, want dan kan ik 'm ook in andere situaties gebruiken.

Code:
Sub Macro1()

Dim sq, sv, st, i As Long, s0 As String
sq = "|" & Join(Application.Transpose(Sheets("B").Range("b6").CurrentRegion.Columns(1)), "|") & "|"
sv = Sheets("A").Range("b4").CurrentRegion
  For i = 1 To UBound(sv)
     If InStr(sq, "|" & Split(sv(i, 1))(0) & "|") = 0 Then s0 = s0 & i & " "
  Next i
    If s0 <> "" Then
      st = Application.Transpose(Split(Trim(s0)))
        With Sheets("C").Range("b5")
          .CurrentRegion.Offset(1).ClearContents
          .Resize(UBound(st)) = Application.Index(sv, st, 0)
        End With
    End If
End Sub
 

Bijlagen

  • Voorbeeld 1.xlsm
    25,6 KB · Weergaven: 14
  • Voorbeeld 2.xlsm
    27,2 KB · Weergaven: 18
voorbeeld met filter (via vba)
met excel 365 als je die niet hebt dan moet ik het een beetje aanpassen.

het werkt waarschijnlijk net zo snel.
zie onder gele cel voor het resultaat
 

Bijlagen

  • Voorbeeld 2 met filter.xlsm
    26,4 KB · Weergaven: 13
Laatst bewerkt:
Let wel in de oplossing van @Syl: door de wildcard wordt ook "Jan Jansen" gefilterd door "Jan Jans".
Ik moest de oplossing iets wijzigen want 'Formula2R1C1 zit niet in mijn Excel 2007 (FormulaArray).


Heb nog wat in elkaar gestoken op twee manieren.
Zie de verschillen in de gele cellen.
Het ligt ook aan de invoer op tabblad 'Uitsluiting'.

Erg snel is het niet met zoveel uitsluitingen, maar detail.
 

Bijlagen

  • Uitsluitingen (1).xlsb
    148,2 KB · Weergaven: 11
harry, door een omzet foutje werd "mijn" filter niet helemaal gevuld. het laatste item ontbrak.

als dat punt een afkortings teken is kan het filter eenvoudig uitgebreid worden.
als TS dat wil, laat hij het wel weten.
 

Bijlagen

  • Uitsluitingen aangepast.xlsb
    152,5 KB · Weergaven: 10
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan