2017-06-16 168 views
0

我有包含式相当多的细胞,然后用VBA这个公式的结果为变量的值,如下所示:Excel公式内VBA

在片在细胞AS4

=SUMPRODUCT(MAX((ROW($AE$4:$AE$997))*($AE$4:$AE$997<>""))) 

,然后在我的VBA:

numRows = ws.Range("AS4").Value 

然而,这开始变得难以跟踪哪些细胞是喂养哪个变量,避免覆盖这些细胞的表通过对事故等

我需要能够在VBA中执行此计算,如果我可以,删除在我的工作表上有“计算单元格”的需要。

我发现有一种方法可以使用公式与WorksheetFunction,但只发现这个简单的例子,并不能适应我的情况。

numRows = WorksheetFunction.SumProduct(MAX((ROW($AE$4:$AE$997))*($AE$4:$AE$997<>""))) 

是行不通的......

有没有办法做到这一点,还是我更好用报废的配方和使用纯VBA方法的想法?

+0

您可以使用评价函数'numRows行=评估(“= SUMPRODUCT(MAX((ROW($ AE $ 4:$ AE $ 997))*($ AE $ 4:$ AE $ 997 <>“”)))“)' – SJR

+0

谢谢,虽然我得到了'类型不匹配',但我认为这不是预期的数值在'numRows'中,这是一个'Long'变量。我如何从中获得价值? – Aurelius

+2

对不起,您需要将内部报价加倍[numRows = Evaluate(“= SUMPRODUCT(MAX((ROW($ AE $ 4:$ AE $ 997))*($ AE $ 4:$ AE $ 997 <>”“ “”)))“)' – SJR

回答

0

与SJR帮助,这是答案:

numRows = [=SUMPRODUCT(MAX((ROW(Weights!$AE$4:$AE$997))*(Weights!$AE$4:$AE$997<>"""")))] 

多一点研究告诉我,evaluate(" ")可刚刚更换用方括号[]。虽然,如果我有这个公式的混合变量或公式不是恒定的,那么我将不得不使用Evaluate

我还需要将表格名称添加到公式中,因为此公式在工作表内不再起作用,并且AE4:AE997不再引用正确的工作表。

上加引号起来也是必要的,因为它是代码,并认为"不同的公式在纸张上