2013-12-12 65 views
0

我在我的excel中使用了下面的代码,将运行时错误作为对象需要。如何将行号作为参数传递给SUMIF()函数?

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)) 

事情是我知道列的起始范围,我需要通过列的标准和结束范围作为参数。任何人都可以帮助我找到解决方案。

+0

您使用'SUMIFS',这是从'SUMIF'不同的程度进行。此外,如果行数大于32767,则“Dim rows As Integer”将失败。请参阅下面的答案。 – Manhattan

回答

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)) 

希望这会有所帮助。

+0

我用你的代码工作正常,谢谢。 – user3094542

+0

@ user3094542:如果这对您有帮助,请点击答案左上角的复选标记,将其标记为已接受。 – Manhattan

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"))

相关问题