如何将行号作为参数传递给SUMIF()函数?

时间:2013-12-12 09:00:51

标签: excel-vba excel-formula vba excel

我在excel中使用了以下代码,将运行时错误视为需要的对象。

Dim FoundCell As Excel.Range
Dim rows As Integer
Set FoundCell = Sheets("Sheet2").Range("A:A").Find(what:="Total", lookat:=xlWhole)
rows = FoundCell.row
rows = rows - 1
Range("C9").value = Application.WorksheetFunction.SumIfs(Range("A1:A" & rows), B9, Range("B1:B" & rows))

我知道列的起始范围,我需要传递标准和结束范围作为参数。任何人都可以帮我找到解决方案。???

3 个答案:

答案 0 :(得分:0)

您只需要SUMIF。此外,B9中的条件不合格。另外,将rows更改为Long。见下文:

Dim FoundCell As Range
Dim rows As Long
Set FoundCell = Sheets("Sheet2").Range("A:A").Find(what:="Total", lookat:=xlWhole)
rows = FoundCell.row
rows = rows - 1
Range("C9").Value = Application.WorksheetFunction.SumIf(Range("A1:A" & rows), Range("B9").Value, Range("B1:B" & rows))

希望这有帮助。

答案 1 :(得分:0)

首先,我怀疑您是否已将正确的参数传递给函数SumIfs

您可以参考http://msdn.microsoft.com/en-us/library/office/bb239775(v=office.12).aspx了解函数的语法。

第二,你正确地通过这个范围Range("A1:A" & rows)

答案 2 :(得分:0)

您可以将公式作为字符串发送或使用Worksheetfunction.Sumifs

语法

WorksheetFunction.SumIfs(<Sum Range>, <Criteria range>, <Criteria>)

方法1

Range("C9").Formula = "=SUMIFS(B1:B6,A1:A6,B9)"

方法2

Range("C9").Value = WorksheetFunction.SumIfs(Range("B1:B" & rows), Range("A1:A" & rows), Range("B9"))