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

IF formule om middelste woord(en) eruit te filteren

Status
Niet open voor verdere reacties.

Djani

Gebruiker
Lid geworden
16 mrt 2016
Berichten
67
Hoi allemaal,

Ik wil een IF formule toepassen op de waarde waarnaar verwezen wordt, maar daarbij wil ik de middelste woorden eruit filteren. Er zijn echter drie categorieen:

1. RENAULT SCENIC G3 = 3 woorden
2. CITROEN C4 PICASSO G2 = 4 woorden
3. LAND ROVER RANGE ROVER EVOQUE G1 = 5+ woorden

De formule zou bij geval 1 "SCENIC" moeten geven; bij geval 2 "C4 PICASSO"; en bij geval 3 "RANGE ROVER EVOQUE"

De waarden zitten in kolom A.

Kan iemand mij hiermee verder helpen?

Met vriendelijke groet,
 
Dus geen Vba zoals daar aangegeven in die sectie, maar met een formule.
Code:
=DEEL(A1;VIND.SPEC(" ";A1);VIND.SPEC("#";SUBSTITUEREN(A1;" ";"#";LENGTE(A1)-LENGTE(SUBSTITUEREN(A1;" ";""))))-VIND.SPEC(" ";A1))
 
Formule werkt, maar ik krijg bij de waarde "LAND ROVER RANGE ROVER EVOQUE G1" het resultaat "ROVER RANGE ROVER EVOQUE".

Dit zou "RANGE ROVER EVOQUE" moeten zijn als dat mogelijk is.
 
Ik denk niet dat je dit met een formule op deze manier kan oplossen, omdat je geen constante string hebt (in ieder geval geen constante startplek). Ik zou de startpositie bepalen a.d.h.v. een aparte tabel met daarin de merken. Op basis van de lengte van de merknaam weet je namelijk de startpositie. En dan maakt het ook niet meer uit of er in die naam een spatie zit of niet.
Doe er eens een voorbeeldbestandje bij, dat kijkt wat makkelijker.
 
Ik zal je inderdaad een voorbeeldbestand opsturen. Zie bijlage!

Bekijk bijlage voorbeeldrapportage.xlsx

Ik werk inderdaad met een tabel (zie kolom O:R in sheet "Variable") waarin de merk/modelnamen worden gedefinieerd. Deze verwijzen naar een cel die niet verplaatst oid, maar de inhoud kan wel veranderen op maandelijkse basis. Ik heb ze in dit geval in waarden geplakt, omdat ze verwijzen naar een ander bestand.

De formule waar ik naar op zoek ben, moet ik kolom M komen te staan van sheet "DATABASE".
 
Ziet er inderdaad goed uit, maar is het ook mogelijk om dat resultaat te krijgen m.b.v. de tabel zoals ik die heb gecreeerd in het tabblad "Variable"?

Ik heb dit namelijk net getest, maar dan krijg ik een blank value.

Corrigeer mij trouwens als ik het verkeerd heb, maar in dit geval zoekt de formule de bijbehorende merk in sheet "Merken" op en verwijdert die de merk van de text string?
 
Corrigeer mij trouwens als ik het verkeerd heb, maar in dit geval zoekt de formule de bijbehorende merk in sheet "Merken" op en verwijdert die de merk van de text string?
Inderdaad. De vergelijking gaat ook wel eens fout (Citroen, Citroën). In dat geval wordt alleen de eerste string verwijderd.
Alle typenamen van auto's die in het voorbeeld staan eindigen op G3, G4, G2 etc. Hoewel dit systematisch lijkt ben ik er niet van uitgegaan dat dat ook zo is.

De formule is in een paar cellen in kolom M gezet en het bereik is aangepast.
 

Bijlagen

Je bent een held. Ontzettend bedankt!

Ik markeer de thread als opgelost.
 
Sorry dat ik weer op deze thread reageer, maar er zijn enkele modellen waarvan die alleen blank geeft. Dat heeft te maken met het feit dat er achter dit model geen generatie "G4", "G3" of iets dergelijks staat.

Bij het model "PORSCHE BOXTER" krijg ik een blank waarde, maar in de ideale situatie zou die natuurlijk BOXTER moeten geven.
Het systeem kent blijkbaar enkele uitzonderingen, want normaal zou het "PORSCHE BOXTER G6" kunnen zijn. Kan de formule bij dit soort gevallen ook het model weergeven - ook als er geen generatie achter staat?

Voor de rest van de modellen (die een generatie bevatten) werkt de formule verder perfect.
 
Laatst bewerkt:
Oeldere,

Iemand had mij erop aangewezen inderdaad. Ik heb de thread aangepast en de link van deze topic erbij gezet.

Aangezien de tabel - waarnaar verwezen wordt - vaststaat, kan het in 1 "cel" voorkomen. De lijst met auto's - een basket - verandert 1 keer per jaar, maar dit is verschillend per land. Zowel de merk- als modelnaam blijft hetzelfde voor een geheel fiscaaljaar.

In dit geval gaat het fout bij het model "PORSCHE BOXTER", maar dit zou bijv. ook "PORSCHE 911" oid kunnen zijn!

Als de formule op een of andere manier ook rekening kan houden met deze uitzondering, dan kan die formule doorgetrokken worden naar alle landen etc.
 
Laatst bewerkt:
Om zelf een beetje mee te denken, is het mogelijk om een if formule te maken aangezien we met 4 categorieen te maken hebben?

- Categorie 1: PORSCHE BOXTER = 2 woorden
- Categorie 2: NISSAN MICRA G1 = 3 woorden
- Categorie 3: CITROEN C4 PICASSO G3 = 4 woorden
- Categorie 4: LAND ROVER RANGE ROVER EVOQUE G1 = 5+ woorden

Deze formule omslaat 1 t/m 3, maar niet 4:

Code:
=IFERROR(IF(LEN(TRIM(Variable!$O$5))-LEN(SUBSTITUTE(Variable!$O$5;" ";""))+1>3;MID(Variable!$O$5;FIND(" ";Variable!$O$5)+1;FIND(CHAR(1);SUBSTITUTE(Variable!$O$5;" ";CHAR(1);LEN(Variable!$O$5)-LEN(SUBSTITUTE(Variable!$O$5;" ";""))))-(FIND(" ";Variable!$O$5)+1));TRIM(MID(SUBSTITUTE(Variable!$O$5;" ";REPT(" ";LEN(Variable!$O$5)));(2-1)*LEN(Variable!$O$5)+1;LEN(Variable!$O$5))));0)

De formule refereert naar de waarde in de tabel en berekent hoeveel woorden die heeft. Kunnen we hier iets mee doen?
 
Oeldere,

Er is zojuist op die thread gereageerd met de oplossing. Ik weet niet precies wat die gedaan heeft en welke logica die formule hanteert, maar het lijkt te werken.
Ik wil je bedanken voor de tijd, moeite en energie die je hierin hebt gestopt.

Much appreciated!
 
Nou heb ik dus vanmorgen zitten stoeien met de formule en ook een oplossing bedacht.
Beetje jammer dit. Ik plaats hem nu toch maar anders is het helemaal voor niks.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan