Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA中的Excel公式_Vba_Excel - Fatal编程技术网

VBA中的Excel公式

VBA中的Excel公式,vba,excel,Vba,Excel,我有很多单元格包含公式,然后使用VBA,这个公式的结果就是一个变量的值,如下所示: 在单元格AS4中的工作表上: =SUMPRODUCT(MAX((ROW($AE$4:$AE$997))*($AE$4:$AE$997<>""))) 然而,这开始变得难以跟踪哪个单元格正在输入哪个变量,从而避免意外地在工作表上覆盖这些单元格,等等 如果可以的话,我需要能够在VBA中执行此计算,这样就不需要在我的工作表上有“计算单元” 我发现有一种方法可以将公式与工作表函数一起使用,但只找到了简单的例子

我有很多单元格包含公式,然后使用VBA,这个公式的结果就是一个变量的值,如下所示:

在单元格AS4中的工作表上:

=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<>"""")))]