Excel - Ändra ett värde med en uppslagstabell
Problem
Jag letar efter hjälp med att skriva ett makro som kommer att utföra en VLOOKUP-formel som kommer att jämföra värdet i G2 på Sheet1, till värdet i A1 på Sheet2. Om värdena matchar vill jag ersätta ett värde i G2 på Sheet1 med värdet från B1 på Sheet2. Anledningen till att jag behöver ersätta värdet i samma cell beror på att inte varje cell kommer att ha en match i uppslagstabellen. Om så är fallet måste det ursprungliga värdet stanna.
Exempel...
Innan
G2 - Sheet1 A1 B1 - Sheet2 12345 12345 ABCDE 23456 34567 GHIJK 34567
Efter
G2 - Sheet1 A1 B1 - Sheet2 ABCDE 12345 ABCDE 23456 34567 GHIJK GHIJK
Det här är vad jag hittills kommit fram till, men allt jag får är värdet "0" i alla celler.
Range ("G2"). Välj ActiveCell.FormulaR1C1 = "= VLOOKUP (TRIM (RC [0]), WCSSCustItemNumLookupTable! R1C1: R2000C2, 2, 0)" Selection.AutoFill Destination: = Område ("G2: G" + sPostDelLastRow ) Räckvidd ("F1"). Välj
Lösning
Du kan försöka med något sådant
Dim temp Som variant temp = "dummy value dude" På fel Fortsätt Nästa temp = WorksheetFunction.VLookup (Range ("G2"), Sheets ("Sheet2"). Räckvidd ("A: B"), 2, False) GoTo 0 Om temp "dummy value dude" Då Range ("G2") = temp Avsluta OmMed detta sagt tror jag vad du behöver göra är att ha en annan kolumn för tempbasis. Låt säga kolumn H på blad 1
Gör en sökning där
som
Range("G2").Select
"titta upp i tidsintervallet H
Med Range ("H2: H" & sPostDelLastRow)
"faktiskt blick upp. Om uppslag misslyckas, använd motsvarande värde från G-kolumnen, annars använd värdet av vlookup
.FormulaR1C1 = "= ISERROR (VLOOKUP (TRIM (RC [-1]), WCSSCustItemNumLookupTable! R1C1: R2000C2, 2, 0)), RC [-1], VLOOKUP (TRIM (RC [-1]), WCSSCustItemNumLookupTable! R1C1 : R2000C2, 2, 0)"
. Kopiera "kopiering
.PasteSpecial xlPasteValues 'klistrar tillbaka som värden för att eliminera formeln
Kopiera igen för att flytta till aktuellt G-sortiment
Sluta med
'kopiera till G-sortimentet
Område ("G2: G" & sPostDelLastRow) .Special
"tydligt teampområde
Område ("H2: H" & sPostDelLastRow) .Klar
Notera
Tack till rizvisa1 för detta tips på forumet.