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

时间:2012-10-04 23:54:02

标签: 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),""-"")"
显然,它将整个公式作为单元格的值。我想要的只是将公式的结果放入单元格中。我已经尝试在“IF ...”部分周围添加Evaluate(),但是IF没有正确评估(我在每个单元格中都以“ - ”结尾)。这是可能做的还是我必须有单独的代码来循环并将值更改为单元格的值?

1 个答案:

答案 0 :(得分:4)

使用:

sheet.range("B2:B35").Formula = "Your formula here"

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

sheet.range("B2:B35").NumberFormat = "General"

修改

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

sheet.range("B2:B35").value = sheet.range("B2:B35").value