【发布时间】:2019-07-18 04:46:24
【问题描述】:
基本上我在 Excel 中设置了一个公式,然后我将其复制到 VBA 中,但是这是一个数组公式:
{=SUM(--(FREQUENCY(IF(('BD MXN'!$J$2:$J$5893="A")*('BD MXN'!$X$2:$X$5893='Acum MXN'!Q2)*('BD MXN'!$Q$2:$Q$5893='Acum MXN'!O2)*('BD MXN'!$I$2:$I$5893="REAL")*('BD MXN'!$W$2:$W$5893='Acum MXN'!P2)*('BD MXN'!$O$2:$O$5893='Acum MXN'!A2),'BD MXN'!$A$2:$A$5893),'BD MXN'!$A$2:$A$5893)>0))}_
它的作用是考虑各种标准来计算另一张表中的唯一值。如果我自己做这个公式很有效,但是一旦我将它添加到代码中它就不起作用了。我的代码如下:
Range("R2:R" & last).FormulaArray = "=SUM(--(FREQUENCY(IF(('BD MXN'!$J$2:$J$"
& Final & "=""A"")*('BD MXN'!$X$2:$X$" & Final & "='Acum MXN'!Q2)*('BD
MXN'!$Q$2:$Q$" & Final & "='Acum MXN'!O2)*('BD MXN'!$I$2:$I$" & Final &
"=""REAL"")*('BD MXN'!$W$2:$W$" & Final & "='Acum MXN'!P2)*('BD MXN'!$O$2:$O$" &
Final & "='Acum MXN'!A2),'BD MXN'!$A$2:$A$" & Final & "),'BD MXN'!$A$2:$A$" &
Final & ")>0))"
Final 变量只是最后一行的值。我知道公式有效,因为如果我执行相同的代码但使用“Formula”而不是“FormulaArray”,它将在 Excel 上引发 #VALUE 错误,然后我返回单元格并按 CTRL + SHIFT + ENTER 并且它可以工作,我对公式什么都不做。
如果我离开 FormulaArray 选项,它甚至不会写任何东西,就像跳过那一行。
【问题讨论】:
-
您想将使用
FormulaArray的公式放入第一个单元格R2然后填写。您所做的类似于突出显示所有单元格,将公式放入公式栏中并按 Ctrl-Shift-Enter。它会将相同的公式填充到所有行中。您想将公式作为数组公式输入到第一个单元格中,然后填写。
标签: excel vba excel-formula