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

find&replace van variabelen

Status
Niet open voor verdere reacties.

wolters125

Gebruiker
Lid geworden
7 feb 2007
Berichten
38
Hallo Experts,

Is het mogelijk de find en replace functie aan te passen zodat je iets krijgt van:

find("inhoud van cel A1") en replace("inhoud cel B1")
find("inhoud van cel A2") en replace("inhoud cel B2")
find("inhoud van cel A3") en replace("inhoud cel B3")
en dan alles cellen afgaan welke data bevatten.

Is dit mogelijk?

Misschien handig om uit te leggen waar ik het voor wil gebruiken.

Ik heb een blad, bv blad 1, met gegevens. 5000 rijen en 30 kolomen vol codes.
Een aantal codes worden vervangen door nieuwe.
Hiervoor heb ik een lijstje gemaakt. In kolom A staat wat het was en kolom B wat het wordt. Een 400 codes
Ik kan dit handmatig doen met find en replace, maar dan ben ik wel even bezig aangezien ik meerdere bladen heb waar ik dit bij wil doen.:rolleyes:

Het is dus de bedoeling dat er gekeken wordt in cel A1, dit gezocht wordt door het hele veld van blad1. en overal waar gevonden vervangen wordt door B1.
Dan de volgende gedaan wordt. dus A2 en overal waar gevonden vervangen wordt door B2.

De veranderingen wil ik op bv Blad2 zetten dan.

Heeft iemand een idee?
Alvast bedankt.

Mvg,

Niels
 
Ik zou eens beginnen met de macro-recorder aan te zetten en dat wat je wilt bereiken stap voor stap uit te voeren. Volgens mij hoef je dan alleen nog een stukje code te maken voor het doorlopen van kolom A.
Celverwijzing zou ik doen met R1K1 (zie hiervoor de VBA help).
 
Laatst bewerkt:
eigenlijk zoals je het zelf voorsteld maar nu in combinatie met de macrorecorder en wat verbeteringen:
Code:
Sub Vervangen()

    Range("A2:D5000").Replace What:=Range("A1"), Replacement:=Range("B1")
    
End Sub
 
Om de juiste code op te stellen, hebben we info nodig over waar de te vervangen dingen staan.
 
Lees nu Wigi zijn reply.............
ben een beetje erg kort door de bocht gevlogen.
Maar een klein beetje info kan je er wel uithalen.

We wacten op meer info.
 
Met onderstaande code moet je een heel eind kunnen komen :

Code:
Sub Vervangen()
For i = 1 To 3
    Cells.Replace What:=Cells(i, 1), Replacement:=Cells(i, 2), LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
Next i
End Sub

Succes
 
Hallo allemaal,

Bedankt voor de reacties zover.


Even duidelijk wat ik heb en wil:

Ik heb een tabel gemaakt.
In kolom A staat de oude code. In kolom B staat wat het moet worden.
Bv in A1 staat 0vw23. Dit wordt dan bv a12bb. Dit staat dan in B1
Bv in A2 staat 5sp04. Dit wordt dan bv e09k. Dit staat dan weer in B2.
en zo verder.

Ik heb verder een blad met een hoop codes en gegevens.
Nu wil ik graag dat gekeken wordt naar de gegevens van cel A1 in de tabel. (0vw23 uit het voorbeeld). Dit moet dan over het hele blad gezocht worden. Waar er een overeenkomst is, dus waar het zelfde staat (0vw23 uit het voorbeeld) moet dat vervangen worden door B1 (a12bb uit het voorbeeld).
Dan verder met de volgende cel (A2) inhoud weer zoeken op het gehele blad en vervangen door de inhoud van B2

De tabel waarin in staat wat door wat vervangen moet worden zet ik op bad 2. Dit is vast en zal verder niet veranderen.
Het blad waar ik de codes op vervangen wil hebben laad ik steeds op het eerste blad.

Middels een knop of iets dergelijks start ik dan het vervangen.

De te zoeken codes kunnen over het gehele blad voorkomen.

Ik hoop dat het nu wat duidelijker is. Anders hoor ik graag gerichte vragen.

Bedankt voor het mee denken.

Met vriendelijke groet,

Niels
 
Heb je de code die ik gepost heb al geprobeert ? Werkt feilloos, tenminste bij mij.

Enig initiatief qua proberen moet toch van jezelf komen.
 
Ben benieuwt wat er van je code gemaakt wordt WinterE!!!
We wachten af.....................
 
Hallo allemaal,

Bedankt voor de reacties.
De code ga ik vandaag uitproberen en kijken of ik hem snap.
Bedankt!

Met vriendelijke groet,

Niels
 
Als je er niet uitkomt........... weet je Helpmij te vinden :).

Succes
 
Jep dan weet ik Helpmij weer te vinden zoals je kunt zien :D .

De code werkt opzich, alleen niet helemaal zoals ik zou willen.:p
Het werkt voor de sheet waar ik op bezig ben en dat is niet de bedoeling.

De "i" geeft het bereik aan 1 tm 3. Dit moet worden van 1 tm einde gegevens.
Dit krijg ik wel voorelkaar denk ik.

Wat er omgezet moet worden naar wat staat op de 2de sheet.
Dus voor het eerste deel van de code moet gekeken worden naar sheet2. Dat krijg ik wel gemaakt.

Het zoeken en vervangen moet op sheet 1 gebeuren. En dit wil me niet lukken.
Code:
[I]Sub Vervangen()
For i = 1 To 3
    Cells.Replace What:=Cells(i, 1), Replacement:=Cells(i, 2), [COLOR="Red"]LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False[/COLOR]
Next i
End Sub[/I]
Het rode stukje zou ik dus graag een andere sheet willen selecteren, hier kom ik niet uit.
Het zou dan iets moeten zijn van; "LookAt Sheet1 en vervang daar de overeenkomsten"

Ik hoop dat iemand me hierbij nog wil helpen?

Alvast bedankt maar weer.

Met vriendelijke groet,

Niels
 
Laatst bewerkt:
Beste Demeter,

Ik heb het aangepast.

Eigenlijk schaam ik me diep, zo had ik het ook moeten kunnen bedenken.:o
In iedergeval erg bedankt. Het werkt zover prima en zoals ik het graag hebben wil.
Ik ga verder met uitbreiden met oa een loop functie.

Allen bedankt! :thumb:

Met vriendelijke groet,

Niels
 
Weet niet hoever je kennis gaat in VB maar kijk hier eens:
http://www.ozgrid.com/VBA/VBALoops.htm

Gaat over efficienty van de verschillende loop soorten. Ben ik ooit een keer op geatendeerd door een wijsman hier op het forum. Ik gebruikte toen voor ieder prboleem een for each c in range loop (niet altijd de efficienste oplossing).

Dank aan Wigi (de wijze man in het verhaal).
 
Dank u voor de link.
Ik zal het eens bekijken.

Ik ben aan het kijken dat ik het zo gemaakt krijg dat automatisch gekeken wordt hoeveel rijen gegevens bevatten.
Dus zeg maar het bereik van "i" vanzelf aangemaakt wordt.

Allen bedankt.

Met vriendelijke groet,

Niels
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan