VBA中的Excel公式
我有很多单元格包含公式,然后使用VBA,这个公式的结果就是一个变量的值,如下所示: 在单元格AS4中的工作表上:VBA中的Excel公式,vba,excel,Vba,Excel,我有很多单元格包含公式,然后使用VBA,这个公式的结果就是一个变量的值,如下所示: 在单元格AS4中的工作表上: =SUMPRODUCT(MAX((ROW($AE$4:$AE$997))*($AE$4:$AE$997<>""))) 然而,这开始变得难以跟踪哪个单元格正在输入哪个变量,从而避免意外地在工作表上覆盖这些单元格,等等 如果可以的话,我需要能够在VBA中执行此计算,这样就不需要在我的工作表上有“计算单元” 我发现有一种方法可以将公式与工作表函数一起使用,但只找到了简单的例子
=SUMPRODUCT(MAX((ROW($AE$4:$AE$997))*($AE$4:$AE$997<>"")))
然而,这开始变得难以跟踪哪个单元格正在输入哪个变量,从而避免意外地在工作表上覆盖这些单元格,等等
如果可以的话,我需要能够在VBA中执行此计算,这样就不需要在我的工作表上有“计算单元”
我发现有一种方法可以将公式与工作表函数
一起使用,但只找到了简单的例子,无法将其应用于上述情况
numRows = WorksheetFunction.SumProduct(MAX((ROW($AE$4:$AE$997))*($AE$4:$AE$997<>"")))
numRows=WorksheetFunction.SumProduct(最大值((行($AE$4:$AE$997))*($AE$4:$AE$997”))
是行不通的
有没有办法做到这一点,或者我最好放弃使用公式和纯VBA方法的想法?在SJR的帮助下,答案是:
numRows = [=SUMPRODUCT(MAX((ROW(Weights!$AE$4:$AE$997))*(Weights!$AE$4:$AE$997<>"""")))]
numRows=[=SUMPRODUCT(最大值((行(权重!$AE$4:$AE$997))*(权重!$AE$4:$AE$997“”)]
更多的研究告诉我,evaluate(“”
)可以用方括号代替[
和]
。尽管如此,如果我在这个公式的组合中有变量,或者公式不是常数,那么我必须使用计算
我还需要将工作表名称添加到公式中,因为此公式在工作表中不再起作用,AE4:AE997
不再引用正确的工作表
在引号上加倍也是必要的,因为它是代码,并且看到的“
与工作表上的公式不同您可以使用求值函数numRows=Evaluate(=SUMPRODUCT(MAX((ROW($AE$4:$AE$997))*($AE$4:$AE$997”))
谢谢,我得到了类型不匹配
但是,我假设这的输出不是numRows
这是一个Long
变量中所期望的数值。如何从中获取值?对不起,您需要将内部引号numRows=Evaluate(=SUMPRODUCT(MAX((ROW($AE$4:$AE$997))*($AE))加倍$4:$AE$997'')”
numRows = [=SUMPRODUCT(MAX((ROW(Weights!$AE$4:$AE$997))*(Weights!$AE$4:$AE$997<>"""")))]