使用更改单元格引用的VBA到FillDown公式

时间:2017-01-25 04:59:23

标签: excel vba excel-vba autofill sumifs

我有一个Sumifs函数可以用2个标准在宏中完成。我的excel文件非常大。所以我的代码看起来像这样:

Sub SumIfs()
ThisWorkbook.Sheets("Sheet1").Activate
Range("L2") = Application.WorksheetFunction.SUMifs(Range("G:G"),Range("A:A"),"Pen",Range("F:F"),"John")
End Sub

但我想改变" Pen"它的细胞参考,意思是" A2"和"约翰"对于F:F范围内的所有单元格保持不变。然后填写下面所有细胞的公式。我用过这段代码,

Application.WorksheetFunction.SUMifs(Range("G:G"),Range("A:A"), A2,Range("F:F"),"John")

但是当我执行填充功能时,它只显示单元格中A2的值。请帮我解决一下这个。在此先感谢。

1 个答案:

答案 0 :(得分:1)

这听起来像是在追求:

Sub SumIfs()
    With ThisWorkbook.Sheets("Sheet1")
        .Range("L2:L" & .Range("G" & .Rows.Count).End(xlUp).Row).Formula = _
                    "=SUMIFS(G:G,A:A,A2,F:F,""John"")"
    End With
End Sub

如果您希望将而不是公式插入到列L中,则可以将该代码扩展为:

Sub SumIfs()
    Dim LastRow As Long
    With ThisWorkbook.Sheets("Sheet1")
        'Assume we want to create values for every cell in column L down until
        'we get to the last cell in column G
        LastRow = .Range("G" & .Rows.Count).End(xlUp).Row
        'Paste the formula
        .Range("L2:L" & LastRow).Formula = _
                    "=SUMIFS(G:G,A:A,A2,F:F,""John"")"
        'Convert to values
        .Range("L2:L" & LastRow).Value = _
                   .Range("L2:L" & LastRow).Value
    End With
End Sub