【发布时间】:2017-09-15 08:37:35
【问题描述】:
这是我的第一篇文章,我无法在任何地方找到确切的答案。我的 Excel 电子表格变得太大而无法操作,因为我在数百万个单元格中有很长的公式。我需要知道如何使用 VBA 计算公式,但只有值出现在 Excel 中。一个例子是我想将 B 列乘以 C 列:
我试过这段代码:
Range("D3:D6").Formula = Evaluate("=B3*C3")
它正确计算了第一个单元格,但对于其他单元格,它仍然尝试将 B3*C3 计算为固定参考,而不是作为随单元格位置变化而变化的动态参考。
我该如何解决这个问题?谢谢。
编辑:
我的实际电子表格如下所示:
这个公式需要向下应用 17520 行和 300 列,但我只希望这些值出现在 Excel 中。这样做的目的是减小文件大小并减少计算时间。
=IF(-SUMIF(AIG$4:AIG4,"<0")>0.9*SUMIF(AIG$4:AIG4,">0"),0,IF(-SUMIF(AIG$4:AIG4,"<0")-IF(WQ5<'Battery Specs'!$B$13,-'Battery Specs'!$B$15,IF(WQ5=ROUNDDOWN('Battery Specs'!$B$13,0)+1,-('Battery Specs'!$B$13-ROUNDDOWN('Battery Specs'!$B$13,0))*'Battery Specs'!$B$15,0))>0.9*SUMIF(AIG$4:AIG4,">0"),-(0.9*SUMIF(AIG$4:AIG4,">0")+SUMIF(AIG$4:AIG4,"<0")),IF(WQ5<'Battery Specs'!$B$13,-'Battery Specs'!$B$15,IF(WQ5=ROUNDDOWN('Battery Specs'!$B$13,0)+1,-('Battery Specs'!$B$13-ROUNDDOWN('Battery Specs'!$B$13,0))*'Battery Specs'!$B$15,IF((0.9*SUMIF(AIG$4:AIG4,">0")+SUMIF(AIG$4:AIG4,"<0"))>'Battery Specs'!$B$10,0,IF(((0.9*SUMIF(AIG$4:AIG4,">0")+SUMIF(AIG$4:AIG4,"<0"))+$AIF5*0.9)>'Battery Specs'!$B$10,'Battery Specs'!$B$10-(0.9*SUMIF(AIG$4:AIG4,">0")+SUMIF(AIG$4:AIG4,"<0")),$AIF5))))))
【问题讨论】:
标签: excel vba excel-formula