excel - 如何在 FormulaR1C1 VBA 中包含动态 VLOOKUP?

标签 excel vba

我需要在另一张纸上查找值。当我手动使用时,我的公式效果很好

=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/

相关文章:

html - 如何下载文件夹中A列的所有链接?

vba - 如何将 2 个宏组合成 1 个

vba - 将 Vookup 与 VBA 中打开的窗口中定义的变量一起使用

VBA 宏 Excel 用于分组、查找和删除重复项

c# - 如何使用 SpreadsheetLight 创建数据透视表?

c# - Excel 中的范围.替换

vba - 运行时错误 13 : Type Mismatch on code when I add certain lines of code

excel - 使用年份和儒略日期确定已经过去了多少天的公式

excel - 在 VBA 中逐行读取/解析文本文件

excel - 舍入变体