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

Aanvulling op eerdere vraag om twee Excel bestanden te mergen.

Status
Niet open voor verdere reacties.

Rijnd006

Gebruiker
Lid geworden
10 aug 2014
Berichten
49
Hallo,

In eerste instantie ben ik al goed op weg geholpen door Arrie, om twee Excel bestanden met elkaar te mergen. In mijn bestanden heb namelijk ook klantnamen waar veel tekst om heen zit.

Bijvoorbeeld: "INCASSO ARDANTA PREMIE 01-01-2013 TOT 01-02-2013 VRAGEN* BEL ARDANTA 053-4881135 2112363290179442"

Hierdoor loopt het mergen helemaal vast, is hier een aanvullende formule voor om alleen de klantnaam eruit te halen, zodat deze alsnog zijn klantcode krijgt toegewezen?

Mijn tweede vraag is kan er ook een zoekkolom extra (voorbeeld 2 kolom E), uitgaande van de oude situatie worden toegevoegd?
Voorbeeld documenten zijn terug te vinden in mijn eerste vraag.

Mijn excuses voor het ongemak.

Alvast bedankt voor de genomen moeite.

Met vriendelijke groet,
Chiel
 

Bijlagen

Beste,

Met deze formule in kolom G in voorbeeld bestand 2 =VERT.ZOEKEN(E2;'[Voorbeeld bestand I.xlsx]Blad1'!$A$3:$B$12;2;ONWAAR) zou dit moeten lukken.

mvg,
tkint
 
Beste tkint,

Ik ga het van de week even testen.

Alvast hartelijke dank voor de oplossing. Mocht ik toch problemen ondervinden dan laat ik nog even van me horen.

Fijne avond verder.

Chiel
 
Beste tkint,

Zo juist de formule uitgeprobeerd, helaas werkt het niet zoals ik het zou willen.
Een aantal klantcodes worden wel opgehaald, net als met de voorgaande formule.

Ik heb in bestand 2 kolom 'H' een nieuwe omschrijving weergegeven met wat 'rommeltekst' met de klantnaam in verwerkt.
In kolom 'G' heb ik de formule geplaatst. Wat overigens nog ontbreekt is een tweede zoekargument in kolom 'E.'

Mogelijk maak ik een fout, maar volgens mee is alles zodanig aangepast dat het zou moeten werken.

Zie graag je reactie tegemoet.

Alvast dank.

Met vriendelijke groet,
Chiel
 

Bijlagen

Laatst bewerkt:
Beste Arrie,

Allereerst bedankt voor je reactie.

Mijn kennis voor het maken van formules is zeer beperkt. Kleine aanpassingen op een bestaande formule, zoals een verwijzing naar een andere kolom, cel of range kan ik goed beredeneren.
Het maken van een wat complexere formule is niet voor mij weggelegd. :(

De formule met zoekwoorden zou inderdaad de oplossing kunnen zijn, maar hoe de formule er dan eruit, ziet specifiek gericht op mijn probleem is voor mij niet duidelijk.

Groetjes,
Chiel
 
Hoi Chiel,

Je hoeft de formule niet zelf te verzinnen, dat heeft Sylvester Ponten al voor je gedaan. Je hoeft hem alleen maar toe te voegen aan je bestand.
Ga als volgt te werk:
- Open voorbeeldbestand 2.
- Als je vervolgens op ALT+F11 drukt kom je in de zogenaamde Visual Basic omgeving.
- Linksboven in je scherm staat dan VBA-project en zie je je bestandsnaam en daaronder een icoontje met Blad1.
- Klik met je rechter muisknop op Blad1 en kies voor invoegen en dan voor module. Er ontstaat nu rechts een wit vak.
- Daarin plak je onderstaande code.
- Ga terug naar het gewone Excel-bestand door linksboven in de VBA-omgeving op het groene Excel-icoontje te klikken.
- BELANGRIJK: Sla je bestand vervolgens op als .xlsm ipv .xlsx bestand (een Excel-bestand met Macro's). Nu is de formule zoekSleutelWoorden toegevoegd aan je formules.

- Ga naar Cel G2 in voorbeeldbestand 2
- Klik in de formulebalk op 'Fx' en kies bij de categorie helemaal onderaan voor: 'door gebruiker gedefinieerd'. Dan zie je daar de formule zoekSleutelWoorden staan.
Klik op deze formule:
- Bij Woord kies je voor cel H2 uit voorbeeldbestand 2 ('vnsvlvlblvbv\ALBERT HEIJN\ncbsjcbklsb\nnsccnd')
- Bij Tabel kies je voor de tabel met meldernamen uit voorbeeldbestand 1.
Het resultaat is dan Albert Heijn
-Vervolgens kun je met de eerdere formule de bijbehorende code opzoeken.

Code:
Function zoekSleutelWoorden(Woord As String, Tabel As Range) As String
    Dim R As Range
    For Each R In Tabel
        If Woord Like "*" & R & "*" Then zoekSleutelWoorden = zoekSleutelWoorden & "|" & R
    Next
    If Len(zoekSleutelWoorden) > 0 Then zoekSleutelWoorden = Right(zoekSleutelWoorden, Len(zoekSleutelWoorden) - 1)
End Function
 
Beste Arrie,

Ga het zo even proberen of dat werkt.

Bedankt voor de uitvoerige uitleg.

Met vriendelijke groet,
Chiel
 
Hoi Arrie,

Het werkt wel ,alleen wordt er wel onderscheidt gemaakt tussen kleine letters en kapitale letters. Alles met kapitale letters staan keurig netjes ingevuld, maar kleine letters of een combi van eerder genoemde variabelen laat de formule ongemoeid. Kan dit in de formule worden meegenomen?
 
Als je zorgt dat alles in je TABEL uit voorbeeldbestand I met hoofdletters staat kun je dit toepassen:

=zoekSleutelWoorden(HOOFDLETTERS(H2);'[Voorbeeld%20bestand%20I(1).xlsx]Blad1'!$A$3:$A$12)

De formule HOOFLETTERS zet eerst alles om in hoofdletters. Eventueel ook te gebruiken om je tabel met klantnamen en codes (voorbeeldbestand I) in hoofdletters te zetten.
 
Hoi Arrie,

Bedankt voor je snelle reactie.
De oplossing is eigenlijk eenvoudiger dan ik dacht.:thumb:
Ga het meteen aanpassen.

groet,
Chiel
 
Als je direct de klantcode wil opzoeken kun je VERT.ZOEKEN en ZoekSleutelWoorden ook combineren:

Code:
=VERT.ZOEKEN(zoekSleutelWoorden(HOOFDLETTERS(H2);'[Voorbeeld%20bestand%20I(1).xlsx]Blad1'!$A$3:$A$12);'[Voorbeeld%20bestand%20I(1).xlsx]Blad1'!$A$3:$B$12;2;0)
 
Hoi Arie,

Dank we voor de aanvulling!. Ik ben nu bezig alles op te zetten en eventuele incomplete of onjuiste gegevens aan te passen.
Ga vanavond er mee aan de slag. Ik hou je op de hoogte!

Dank voor alle moeite tot zover.

Met vriendelijke groet,
Chiel
 
Antwoordt aan Watchdog:

I.v.m. overige werkzaamheden ben ik er nog niet aan toegekomen om deze vraag af te ronden.
De planning is eind volgende week om hier verder mee aan de slag te gaan.
 
Hallo,

I.v.m. drukke werkzaamheden ben ik er vandaag pas aan toegekomen om te reageren. Mijn excuses hiervoor!

De formule werkt voor ongeveer 60% naar behoren de overige 40% worden niet toegewezen. Deels is dat te wijten aan dubbele
klant namen in het bestand bijvoorbeeld klant NS i.c.m. woorden met 'ns' er in verwerkt. Hierdoor kan in kolom 'E' twee namen
achter elkaar komen te staan. Is hier een oplossing voor of moet alle tekstuele omschrijvingen worden aangepast?

Wat volgens mij in de macro nog ontbreekt is een tweede zoekargument naar kolom 'D'. Indien kolom 'G' niets is te vinden zoek dan in
kolom 'D' naar de juiste naam. Kan in de macro een tweede zoekargument worden aangebracht of moet deze aanpassing handmatig gebeuren?

Alvast bedankt voor de reactie.

Met vriendelijke groet,
Chiel
 

Bijlagen

Zet in je klantentabel een spatie achter NS, wellicht helpt dat al een hoop (dient er in kolom G of D bij de 'echte' NS ook wel een spatie te staan).

Onderstaande formule kijkt eerst of het resultaat van zoeken op G2 een lengte van 0 karakters oplevert (ofwel leeg is), zo ja dan gaat hij uit van kolom D, anders volgt het resultaat van kolom G

Code:
=ALS(LENGTE(zoekSleutelWoorden(G2;Klantenbestand!$A$1:$B$339))=0;zoekSleutelWoorden(D2;Klantenbestand!$A$1:$B$339);zoekSleutelWoorden(G2;Klantenbestand!$A$1:$B$339))
 
Laatst bewerkt:
Beste Arrie,

Bedankt voor je snelle reactie. Ik ga er z.s.m. aan de slag.

Mvg.
Chiel
 
Hoi Arrie,

In welke kolom moet ik deze formule plaatsen? In kolom 'E' staat al de macro gaat deze dan ter zielen? en in 'F' komt de code te staan.

Groet,
Chiel
 
In kolom E wordt vrijwel alle plantnamen geplaatst, echter kolom F wordt maar gedeeltelijk gevuld. Ik kan helaas geen foutieve verwijzingen/koppelingen ontdekken.
Mogelijk heeft het een relatie met kolom D, dit omdat hier betaalautomaat staat. Indien ik deze tekst vervang voor de klant naam veranderd er niets.:(:( (zie bijlage).

Groet,
Chiel
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan