zoeken en vervangen op voorwaarde

Status
Niet open voor verdere reacties.

CDE

Gebruiker
Lid geworden
24 apr 2018
Berichten
12
Goedemiddag,

Ik ben op zoek naar een stukje vba code dat mij kan helpen om in een document altijd dezelfde vervanging van tekst of datum in een cel te doen op voorwaarde dat in de eerste kolom een bepaald ID staat.
Mijn eerste idee was vlookup, maar ik weet niet goed hoe dan verder aan te geven: vervang in kolom 2 (B) of kolom 5 (E) van dezelfde rij met een bepaalde waarde.

Zie geüpload bestand, genaamd 'voorbeeldje.xlsm'. Het gaat om de geel gearceerde cellen; die moeten altijd worden vervangen door de waarde in kolom G.
De volgorde van de rijen kan bij het maandelijks draaien van mijn bestand telkens anders zijn, daarom de vlookup.

Helpmij please! Dank alvast.
 

Bijlagen

  • voorbeeldje.xlsm
    15,4 KB · Weergaven: 33
Laatst bewerkt:
Zoiets?
Code:
Sub zoekenvervangenopvoorwaarde()
Dim cl As Range
 For Each cl In Columns(7).SpecialCells(2)
  If cl.Row > 1 Then cl.Offset(, -2 - (Abs(Not IsDate(cl)) * 3)) = cl.Value
 Next cl
End Sub
 
Dank voor je reactie.
Ik was niet helemaal duidelijk denk ik, sorry...
Normaal bestaat kolom g niet. Ik wil de vervanging aangeven als "tekst" in de code, dus:
- als kolom A is "pq40dc" dan moet van zelfde rij kolom E vervangen worden door "1-1-2019"
- als kolom A is "jj25am" dan moet van zelfde rij kolom B vervangen worden door "Nee"
- als kolom A is "nx94gy" dan moet van zelfde rij kolom B vervangen worden door "Nee"
- als kolom A is "jj35id" dan moet van zelfde rij kolom E vervangen worden door "3-1-2019"

Zo iets duidelijker wat ik bedoel hoop ik?

FYI; dit zijn gegevens die ik niet meer kan aanpassen in ons systeem en dus telkens bij opnieuw draaien rapportage verkeerd terug zullen komen. Vandaar deze vervanging zodat we dit niet telkens handmatig hoeven te doen.
Maakt onderdeel uit van veel grotere uitgebreide macro.
 
Laatst bewerkt door een moderator:
Code:
Sub M_snb()
  sn=cells(1).currentregion

  for j=1 to ubound(sn)

   Select case sn(j,1)
   Case "pq40dc","jj35id"
     sn(j,5)=cdate("01-01-2019")
   Case "jj25am","nx94gy"
     sn(j,2)="Nee"
   end Select
  next

  cells(1).currentregion=sn
End Sub
 
Yes dat werkt. Hij klopte niet helemaal (er zijn 2 verschillende data) maar na kleine aanpassing is het gelukt. :)

Meestal neem ik macro's op om ergens te komen, dus ik probeer nog even te begrijpen wat hier nu precies staat.
sn=cells(1).currentregion is om het gebied aan te geven. Is sn daarbij een standaard term of iets dat je zelf bedenkt?
En cells(1).currentregion=sn aan het einde is bedoeld om de selectie van het gebied weer op te heffen?

Hartelijk dank voor je hulp!
 
Laatst bewerkt door een moderator:
Doorloop de macro in de VBEditor met F8 en zie wat er gebeurt in het werkblad (als antwoord op je laatste vraag).

sn bedenk ik zelf, maar gebruik ik standaard voor een Variant Array, (net zoals sp, sq, st, sr, etc.).
Door voor verschillende soorten variabelen standaardtermen te gebruiken maak je het jezelf gemakkelijker; ook bij het teruglezen later.
Tekstvariabelen (string) geef ik de namen c01, c02, c03 in de volgorde waarin ze voor het eerst in een macro voorkomen.
Bij een For Each ...Loop geef ik ieder elemant (= objectvariabele) altijd de naam it. Bij een genest for each loop it1, it2, it3, etc.
Bij een lus (For ... Next) geef ik de eerste loop als teller (= integer of long variabele) de naam j, een geneste loop jj, een daarbinnen geneste loop jjj, enz.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan