在Excel和VBA中,如何将单元格的值设置为公式结果而不是公式

Kur*_*urt 1 excel vba formula evaluate

我从一张工作表中获取值,然后使用 Excel 中的宏将它们放入另一张工作表中。我目前有这个工作正常:

sheet.range("B2:B35").Value = "=IF(SUMPRODUCT(--(Raw!$B$11:$B$322=$A2),--(Raw!$D$11:$D$322=All!$B$2),Raw!$H$11:$H$322)<>0,SUMPRODUCT(--(Raw!$B$11:$B$322=$A2),--(Raw!$D$11:$D$322=All!$B$2),Raw!$H$11:$H$322),""-"")"
Run Code Online (Sandbox Code Playgroud)

显然,它把整个公式作为单元格的值。我想要的只是将公式的结果放入单元格中。我尝试在“IF ...”部分添加 Evaluate() ,但 IF 无法正确评估(我只是在每个单元格中得到“-”)。这是否可以做到,或者我是否必须有单独的代码来循环并将值更改为单元格的值?

mki*_*ton 5

使用:

sheet.range("B2:B35").Formula = "Your formula here"
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,您可能必须更改格式(首先执行此操作):

sheet.range("B2:B35").NumberFormat = "General"
Run Code Online (Sandbox Code Playgroud)

编辑:

解决方案是在OP代码后添加以下行:

sheet.range("B2:B35").value = sheet.range("B2:B35").value
Run Code Online (Sandbox Code Playgroud)