Excel 在vba中的单元格中传递公式中的变量名

Excel 在vba中的单元格中传递公式中的变量名,excel,vba,Excel,Vba,我想计算Sheet1中包含字符串RESULT的单元格数,如果Sheet1和Sheet2的单元格中有特定字符串匹配,则将计数结果放入Sheet2 我尝试了以下逻辑: lnCol =20 lastRow = 10 Worksheets("Sheet2").Cells(lastRow + 2, 6).Formula = "=COUNTIFS('Sheet1'!" & Range(Cells(21, lnCol), Cells(800, lnCol)).Address(False, False)

我想计算
Sheet1
中包含字符串
RESULT
的单元格数,如果
Sheet1
Sheet2
的单元格中有特定字符串匹配,则将计数结果放入
Sheet2

我尝试了以下逻辑:

lnCol =20
lastRow = 10
Worksheets("Sheet2").Cells(lastRow + 2, 6).Formula = "=COUNTIFS('Sheet1'!" & Range(Cells(21, lnCol), Cells(800, lnCol)).Address(False, False) & ", ""RESULT"",'Sheet1'!" & Range(Cells(21, lnCol), Cells(800, lnCol)).Address(False, False) & ,""*""&Sheet2!.Cells(lastRow + 2, 5)&""*"")"
但是,公式无法识别变量名并按原样放置

=COUNTIFS(Sheet1!$T$21:$T$599,"RESULT",Sheet1!$D$21:$D$599,Sheet1!"*"&D3&Sheet1!"*")
这是我用excel直接写的公式。但我想将其转换为VBA,并用相应的列号替换公式中的
T
D

如何使用VBA实现这一点?

您在结尾处混淆了一些语法:
、“*”和Sheet2!。单元格(lastRow+2,5)和“*””
。首先缺少双引号,其次我认为您希望实际引用特定单元格中的值。您可以像前面在字符串中所做的那样(使用
地址
)或通过
VBA
获取名称。如果是后者,则:
,“*”&工作表(“Sheet2”)。单元格(lastRow+2,5)。值(“”*“”)“
看起来好多了,假设您在某个地方声明了
lastrow
。另外,您知道您可以直接在
VBA
中执行此操作,而不是先插入公式吗?我是VBA新手,我对它知之甚少。我想很难看透您编写的内容。我的建议是研究一下方法。声明您的
工作表
变量、一些
范围
对象等,然后运行该方法。我建议您首先在Excel中手动插入公式,然后将该公式发布到您的上述问题中。一旦你知道了你的公式应该是什么样子,你就很容易把它分解成包含变量:)