我需要在另一张纸上查找值。当我手动使用时,我的公式效果很好
=VLOOKUP(TRIM(C2),TRIM('MyDataSheet'!$A$1:$E$500),4,FALSE)
但是,我需要能够使用 VBA 动态地将这个公式插入到单元格中。这是我尝试过的:
Set lookupRange = ThisWorkbook.Sheets("MyDataSheet").Range("A1:E500")
Set newCol = tbl.ListColumns.Add
newCol.DataBodyRange.FormulaR1C1 = "=VLOOKUP(TRIM(RC[-16])," & lookupRange.Address(True, True, xlR1C1) & ", 4, FALSE)"
这会像这样在 Excel 中插入公式,但完全忽略不同的工作表并忽略第二个 TRIM:
=VLOOKUP(TRIM(C2),$A$1:$E$500),4,FALSE)
如何编写VBA来动态插入VLOOKUP,如下所示: =VLOOKUP(TRIM(C2),TRIM('MyDataSheet'!$A$1:$E$500),4,FALSE)
最佳答案
你可以这样做:
Sub Tester()
Dim tbl As ListObject, newCol As ListColumn, c As Range
Set tbl = ActiveSheet.ListObjects(1) 'for example
Set newCol = tbl.ListColumns.Add
newCol.Name = "Lookup"
' "id" is the column with the values you want to look up
Set c = tbl.ListColumns("id").DataBodyRange.Cells(1)
newCol.DataBodyRange.Formula2 = _
"=VLOOKUP(TRIM(" & c.Address(False, False) & "),TRIM('MyDataSheet'!$A$1:$E$500),4,FALSE)"
End Sub
关于excel - 如何在 FormulaR1C1 VBA 中包含动态 VLOOKUP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75891096/