excel vba FormulaArray

时间:2016-07-29 12:19:16

标签: excel vba formula

我试图在excel vba中构建一个高级过滤器表,如下图所示。在最后一栏中,我使用下面的数组公式。

Worksheets("Contracts").Range("N13:N" & Worksheets("contracts").Range("M" & Rows.Count).End(xlUp).Row).FormulaArray = _
"=sum(if(invoice!$A$3:$A$2000=contracts!B13,invoice!$AA$3:$AL$2000))"

我遇到的问题是它将公式复制到范围内的所有单元格而不更改单元格:contract!B13。它保持不变。 B13。

Advanced Filter

我哪里错了?

谢谢你, 丹尼尔

1 个答案:

答案 0 :(得分:0)

你可以这样做:

lastRow = Range("M" & Rows.Count).End(xlUp).Row
For i = 13 to lastRow
    Worksheets("Contracts").Range("N13:N" & i).Formula = _
    "=sum(if(invoice!$A$3:$A$2000=contracts!B" & i & ",invoice!$AA$3:$AL$2000))"
Next