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

Excel regelmatig 20 woorden vervangen

Status
Niet open voor verdere reacties.

damnsharp

Terugkerende gebruiker
Lid geworden
6 jan 2012
Berichten
1.385
Hoi,
Ik krijg een Excel document waar ik geregeld een lijstje van rond de 20 woorden moet zoeken en vervangen door 20 andere woorden.
Bijvoorbeeld:
black -> zwart
blue -> blauw
green -> groen
black/green -> zwart/groen
etc.

Dat doe ik nu met zoek/vervang (20 keer).
Is daar een geautomatiseerd script van te maken dat ik bij een nieuw Excel document ook weer kan gebruiken?

Bedankt voor meedenken!
 
Maak een tabelletje met die 20 woorden en de vertaling er naast.
Dan kan je dat met een simpel scriptje doen.
 
Tuurlijk kan dat; probeer het eerst eens zelf door een macro op te nemen en te kijken wat er gebeurt. 99% kans dat je code die in de macro wordt gemaakt zelf kunt aanpassen voor de overige 19 woorden. Zo niet: plaats dan een voorbeeld bestandje, dan kunnen we je wat beter helpen.
 
Bedankt @edmoor en @OctaFish voor meedenken.

Heb na meer zoeken een script en methode gevonden, dat werkt goed. Alleen moet ik eerst dat zoek/vervang tabelletje dan maken.
Dus ga de macro benadering tip van @OctaFish proberen.
 
Als het altijd dezelfde woorden (en hetzelfde aantal) zijn, dan zou ik daar geen tabel bij gebruiken, maar alles in de macro doen. Een tabel moet namelijk wél ergens staan.... En kan dus ook zichtbaar zijn, en door verkeerde handelingen worden vernaggeld. Als je de 20 woorden in een variabele zet, en de 20 vertalingen ook, is het net zo makkelijk en veel veiliger om te doen. Maar dat is mijn bescheiden opvatting :)
 
@OctaFish, heb het inderdaad met macro gedaan. Variabelen in een macro lukt me niet dus het zijn nu 10x dezelfde regels onder elkaar ;-) Maar het werkt!

Ah je hebt al macro gemaakt voor me! Nou dat is aardig... dan is het helemaal opgelost. Super!! :love::thumb:
 
En omdat we altijd graag helpen, hier alvast een macrootje waarmee je de eerste 4 woorden simpel vertaalt :)
Code:
Sub Vertalen()
Dim Eng As Variant, Nld As Variant

    Nld = Array("zwart/groen", "blauw", "groen", "rood", "zwart")
    Eng = Array("black/green", "blue", "green", "red", "black")
    With Application
        .EnableEvents = False
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
    End With
    For i = LBound(Eng) To UBound(Eng)
        Cells.Replace What:=Eng(i), Replacement:=Nld(i), LookAt:=xlPart, MatchCase:=False
    Next i
    With Application
        .EnableEvents = True
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
    End With

End Sub

Lijkt mij dat je de rest van de tekst er wel bij kan kloppen.
 
Nog 2 vragen:

1)
Kan de Nld en Eng woorden uit de array ook onder elkaar want wordt lange regel nu.
Ik probeerde dit maar krijg meteen melding:
Code:
Nld = Array(
"zwart/groen",
"blauw", 
"groen", 
"rood", 
"zwart")

2)
Kan ik ook alleen verticaal alles vervangen i.p.v. hele worksheet? Dat zou nóg fijner zijn.
 
Laatst bewerkt:
Iets ander gebruik van Array en met antwoord op je 2e vraag, in dit geval verticaal kolom A.
Je hoeft alleen nog maar de rest van de woorden in te vullen.
Code:
Sub VervangENdoorNL()
    Dim Talen(1 To 20, 1) As String
    [COLOR="#008000"]'Nederlands                     Engels[/COLOR]
    Talen(1, 0) = "zwart/groen":    Talen(1, 1) = "black/green"
    Talen(2, 0) = "blauw":          Talen(2, 1) = "blue"
    Talen(3, 0) = "groen":          Talen(3, 1) = "green"
    Talen(4, 0) = "rood":           Talen(4, 1) = "red"
    Talen(5, 0) = "zwart":          Talen(5, 1) = "black"
    Talen(6, 0) = "wit":            Talen(6, 1) = "white"
    Talen(7, 0) = "":               Talen(7, 1) = ""
    Talen(8, 0) = "":               Talen(8, 1) = ""
    Talen(9, 0) = "":               Talen(9, 1) = ""
    Talen(10, 0) = "":              Talen(10, 1) = ""
    Talen(11, 0) = "":              Talen(11, 1) = ""
    Talen(12, 0) = "":              Talen(12, 1) = ""
    Talen(13, 0) = "":              Talen(13, 1) = ""
    Talen(14, 0) = "":              Talen(14, 1) = ""
    Talen(15, 0) = "":              Talen(15, 1) = ""
    Talen(16, 0) = "":              Talen(16, 1) = ""
    Talen(17, 0) = "":              Talen(17, 1) = ""
    Talen(18, 0) = "":              Talen(18, 1) = ""
    Talen(19, 0) = "":              Talen(19, 1) = ""
    Talen(20, 0) = "":              Talen(20, 1) = ""
    
    With Application
        .EnableEvents = False
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
    End With

    For i = 1 To UBound(Talen)
        Range("A:A").Replace What:=Talen(i, 1), Replacement:=Talen(i, 0), LookAt:=xlPart, MatchCase:=False
    Next i

    With Application
        .EnableEvents = True
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
    End With
End Sub
 
Laatst bewerkt:
Een lange regel in VBA kun je inkorten. Plaats, bijvoorbeeld na een komma, EERST een spatie, daarna Underscore-Enter.
Dan komt hij op twee regels te staan, of meer als dat nodig is, dit kan onbeperkt...
 
Waarom wil je het zo onoverzichtelijk hebben?
Code:
    Nld = Array("zwart/groen", "blauw", "groen", "rood", "zwart", _
        "oranje", "geel", "paars", "grijs")
    Eng = Array("black/green", "blue", "green", "red", "black", _
        "orange", "yellow", "purple", "grey")
 
Beargumenteer eens: wat is het nadeel van een 'lange' regel ?

Code:
Nld = split("zwart/groen blauw groen rood zwart oranje geel paars grijs")
Eng = split("black/green blue green red black orange yellow purple grey")
 
Dank jullie wel voor alle reacties!:thumb:
@edmoor, mooi script en ook overzichtelijk. Heb het geprobeerd en het gaat goed totdat er in 1 cel meerdere teksten (in mijn geval categorieën) staan zoals "appels, bananen, appels/bananen" en ik wil "appels/bananen" vervangen door "peren" gaat het niet goed. Script maakt er wel wat van maar niet ideaal. Maar ga zelf even uitzoeken wat ik ermee kan doen.

@mvdvlist, weer wat erbij geleerd, spatie en underscore :)
 
Het vervangen doet niet een gedeelte van de inhoud maar vervangt de hele inhoud.
Wil je dat anders dan kan niet zomaar de Replace functie worden gebruikt.
 
Ik begrijp het @edmoor! Dank je wel voor de uitleg. :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan