Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

VBA Excel vervangen deel tekst in vlookup

Pagina: 1
Acties:

Vraag


  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 17-11 16:25
Ik heb een 2-tal Excel sheets: 1 sourcebestand en 1 bestand waarmee ik de source uitlees om vervolgens daarmee aan de slag te kunnen.

Nu heb ik een paar knoppen gemaakt die in 1 kolom de (door vlookup gevonden) waardes moet omzetten naar een bepaalde string, afhankelijk van de knop die ingedrukt wordt.
Het lukt me wel om velden die een vaste waarde hebben aan te passen, maar niet de velden waar deze vlookup opdracht in staan.

Dus: de kolom waarin :

code:
1
=VLOOKUP(A2;'S:\Source\[source.xlsm]Overzicht'!A:F;2;FALSE)

staat, daar kan ik dus niet mee werken op die manier.
Die manier is:

code:
1
  Range("C2", "C100").Replace "LPZWNL", "LPAB00", xlPart


Is daar een simpele oplossing voor die ik niet zie?

¯\_(ツ)_/¯

Beste antwoord (via M.v.Veelen op 20-07-2017 10:30)


  • TDB
  • Registratie: Oktober 2000
  • Laatst online: 17-11 22:05

TDB

With Range("C2:C100")
.Cells.Copy
.Cells.PasteSpecial xlPasteValues
.Cells(1).Select
End With

Later kan je dan de vlookup formule weer terug zetten in VBA.

PSN: TDBtje

Alle reacties


  • Mar.tin
  • Registratie: Januari 2010
  • Laatst online: 12:41
[verwijderd]

[ Voor 115% gewijzigd door Mar.tin op 28-07-2022 12:23 ]


  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 17-11 16:25
Dat stukje code staat in VBA. Ik krijg met jouw regel een foutmelding trouwens.

¯\_(ツ)_/¯


  • Mar.tin
  • Registratie: Januari 2010
  • Laatst online: 12:41
[verwijderd]

[ Voor 122% gewijzigd door Mar.tin op 28-07-2022 12:23 ]


  • TDB
  • Registratie: Oktober 2000
  • Laatst online: 17-11 22:05

TDB

Range("c2:c100").Select
Selection.Replace What:="LPZWNL", Replacement:="LPAB00", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

PSN: TDBtje


  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 17-11 16:25
:)

Deze geeft me helaas ook een foutmelding op regel 5, maar neemt dit dan de value en vervangt die de desbetreffende (deel)string ?

Edit: ik heb die 2e reactie niet op tijd gezien. Die zorgt er echter ook niet voor dat de kolom waarin de vlookup-regel staat wordt vervangen. De value moet worden uitgelezen en daar moet dan de string in worden vervangen.

[ Voor 45% gewijzigd door M.v.Veelen op 20-07-2017 09:02 ]

¯\_(ツ)_/¯


  • Mar.tin
  • Registratie: Januari 2010
  • Laatst online: 12:41
[verwijderd]

[ Voor 101% gewijzigd door Mar.tin op 28-07-2022 12:22 ]


  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 17-11 16:25
TDB schreef op donderdag 20 juli 2017 @ 09:00:
Range("c2:c100").Select
Selection.Replace What:="LPZWNL", Replacement:="LPAB00", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Dit werkt alleen als ik in de kolom naast de 'vlookup-kolom' een extra kolom plaats met daarin ' =B2 '. Dan wordt de waarde in die extra kolom geplaatst en daar kan dan vervolgens de string succesvol worden vervangen. Ik wil echter niet met die extra kolom werken, maar het afhandelen in de oorspronkelijke vlookpup-kolom als dat kan.

¯\_(ツ)_/¯


  • TDB
  • Registratie: Oktober 2000
  • Laatst online: 17-11 22:05

TDB

misschien even een voorbeeld bestand neerzetten?

PSN: TDBtje


  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 17-11 16:25
Voorbeeldbestanden wordt wat lastig omdat er ook info in staat wat niet gedeeld mag worden. En als ik dat eruit sloop dan krijg ik foutmeldingen en moet ik die eerst weer op zien te lossen. Maar misschien kan ik mezelf verduidelijken door een schermprintje:

Afbeeldingslocatie: http://i65.tinypic.com/2iassut.png

In de 1e kolom geef ik het F-nummer op. Dan wordt vanuit het Source bestand de waarde overgenomen die overeenkomt en in kolom B geplaatst. En DIE waarde wil ik dus kunnen wijzigen door op de knoppen te drukken die onder "exporteren" staat. In de extra kolom (C) die ik heb gemaakt om te testen, kan ik de string wel wijzigen doordat dit alleen een '=B2', '=B3', enz. waarde heeft. Maar die extra kolom wil ik dus niet.

Overigens moet ik, als dit werkt, ook nog voor elkaar zien te krijgen dat als ik in kolom H een andere waarde kies, dat dan voor diezelfde regel ook alleen in die regel (row) hetzelfde gebeurt.

Ik vraag me af of dit te doen is allemaal......

¯\_(ツ)_/¯


  • TDB
  • Registratie: Oktober 2000
  • Laatst online: 17-11 22:05

TDB

uiteraard is alles te doen met VBA ;)
maar kan je dan niet beter de waardes in kolom B omzetten naar waarden, dan een replace doen en dat dan exporteren? Daarna kan je de vlookup functie weer terug laten zetten.

PSN: TDBtje


  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 17-11 16:25
Hoe zet ik kolom B in 1 keer om naar waarden dan? Want hij haalt de gegevens op deze manier uit het Source bestand.

¯\_(ツ)_/¯


Acties:
  • Beste antwoord

  • TDB
  • Registratie: Oktober 2000
  • Laatst online: 17-11 22:05

TDB

With Range("C2:C100")
.Cells.Copy
.Cells.PasteSpecial xlPasteValues
.Cells(1).Select
End With

Later kan je dan de vlookup formule weer terug zetten in VBA.

PSN: TDBtje


  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 17-11 16:25
TDB schreef op donderdag 20 juli 2017 @ 09:39:
With Range("C2:C100")
.Cells.Copy
.Cells.PasteSpecial xlPasteValues
.Cells(1).Select
End With

Later kan je dan de vlookup formule weer terug zetten in VBA.
Dit werkt :)

Terugzetten van de vlookup is eigenlijk niet nodig omdat hierna de export wordt gestart en de sheet wordt afgesloten (niet opgeslagen). Een exportbestand (.csv) wordt weggeschreven en klaar.

Heb je ook nog een idee hoe ik dit per regel kan doen?

Dus stel: ik heb 50 devices ingevuld, heb op de WINX knop gedrukt en heb her en der een WIN7 die ik kan instellen door op de selectmenu's te klikken in kolom H. De waarden van alleen die regel moet dan worden veranderd in kolom B

¯\_(ツ)_/¯


  • TDB
  • Registratie: Oktober 2000
  • Laatst online: 17-11 22:05

TDB

Dat kan je sowieso met een loop doen, dan per regel kijken kolom H en waar nodig de waarde in kolom B veranderen.

PSN: TDBtje


  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 17-11 16:25
Eh......

Ik ga knutselen. Trial and error.... :)

Edit:

kan dit ook "live" ? Dus zodra ik de waarde wijzig in kolom H, dat dan de waarde in kolom B ook meteen wijzigt? Wordt lastig zeker, omdat we dan bij het eerste probleem zijn dat je dan nog niet de values hebt geplakt.

Dan zou je voor het exporteren een soort van "genereer-knop" moeten hebben zodat dan alle values worden geplakt en een check wordt uitgevoerd per regel. Toch?

[ Voor 79% gewijzigd door M.v.Veelen op 20-07-2017 10:01 ]

¯\_(ツ)_/¯


  • TDB
  • Registratie: Oktober 2000
  • Laatst online: 17-11 22:05

TDB

Sub test()

Dim A As Long
Application.ScreenUpdating = False

For A = 2 To 100

If Range("h" & A) = "Win7-32" Then
Range("B" & A).Replace What:="LPZWN", Replacement:="LPAB00", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End If
Next A


Application.ScreenUpdating = True

End Sub

PSN: TDBtje


  • M.v.Veelen
  • Registratie: Januari 2001
  • Laatst online: 17-11 16:25
Nothing happens....?

Even kijken waar het mis gaat......

Edit: ik moet natuurlijk wel een manier vinden om die Sub te laten lopen.....extra knopje dan maar denk ik.

Edit 2: ik heb 'm verwerkt in de Exporteren-knop. Ik laat 'm eerst de call naar deze sub doen en dan de call naar het exporteren als .csv bestand.

Ik ben er wel uit zo volgens mij. Dankjewel !!

[ Voor 85% gewijzigd door M.v.Veelen op 20-07-2017 10:30 ]

¯\_(ツ)_/¯

Pagina: 1