VBA excel,Sumif动态行

时间:2019-06-27 15:45:11

标签: excel vba

我正在尝试对我检查过的所有值求和。对于

ActiveCell.Formula = "=SUMIF(B1:B5,TRUE,A1:A5)" 

但是在以下情况下可以正常工作

ActiveCell.Formula = "=SUMIF(Range(cells(1,2),cells(lastrow,2)),TRUE,Range(cells(1,3),cells(lastrow,3))" 

我得到编译错误。谁能帮我。


Dim lastrow As Long

lastrow = Cells(Rows.Count, "A").End(xlUp).Row
Range("D1").Select
ActiveCell.Formula = "=SUMIF(B1:B5,TRUE,A1:A5)"    'Please help me to convert into Range(cells(1,2),cells(lastrow,2)),True,Range(cells(1,3),cells(lastrow,3))

1 个答案:

答案 0 :(得分:0)

您的公式语法错误。您正在Excel公式中使用VBA引用(将会细分要点):

ActiveCell.Formula = _
"=SUMIF( _  'Application
Range(cells(1,2),cells(lastrow,2)) _ 'VBA
,TRUE, _ 'Application
Range(cells(1,3),cells(lastrow,3)) _ 'VBA
" 'Application

要使公式显示在单元格中,您将显示为:

ActiveCell.Formula = "=SUMIF(B1:B" & lastrow & ",TRUE,A1:A" & lastrow & ")" 

如果您希望VBA进行这项工作并且只想输出一个值:

ActiveCell.Value = Application.SUMIF(Range(Cells(1,2),Cells(lastrow,2)),"TRUE",Range(Cells(1,1),Cells(lastrow,1)))

与您的代码更改有关,尽管您在代码中列出了第3(c)列,但您以前曾使用第1(a)列作为总和范围...在我的代码示例中,我从工作{{ 1}}功能。