使用工作表时,SumIf返回0值。函数SumIf

时间:2017-07-03 15:40:14

标签: excel-vba vba excel

我使用excel的工作表函数创建了一个sumif函数,请参阅下面的

Public Function sumif(Range As Variant, criteria As Variant, sum_range As Variant)
On Error Resume Next
sumif = WorksheetFunction.sumif(Range, criteria, sum_range)
If IsError(sumif) Then
sumif = ""
End If
End Function

使用此公共功能,我试图将特定位置登录到特定系统的小时数相加。我已经包含了我在下面尝试做的事情

Private Sub lookupWLDetails()
Dim lngLastRow As Long
Dim vntSiteID As Variant
Dim lngRow As Long
Dim rngDS As Range

With Sheet3
lngLastRow = lastRowInCol(.Columns("B"), 11)
Set rngDS = .Range(.Cells(11, "B"), _
.Cells(lngLastRow, "X"))
End With

lastrowinCol函数没有任何问题,这已成功在同一个excel文档中多次使用,因此无需粘贴

With Sheet9
lngLastRow = lastRowInCol(.Columns("B"), 2)
For lngRow = 2 To lngLastRow
vntSiteID = .Cells(lngRow, "B")
.Cells(lngRow, "C") = sumif(rngDS.Columns(3), vntSiteID, rngDS.Columns(7)) 
.Cells(lngRow, "D") = sumif(rngDS.Columns(3), vntSiteID, rngDS.Columns(8)) 
Next lngRow
End With
End Sub   
  • 最上面的代码与底部的2段代码分开
  • 底部的2段代码是同一个子
  • 的一部分

这段代码的目的是遍历表9中的col B(它保存报表上每个站点的列表),然后对表3中每个请求列中的所有值求和,只要站点保持在表3 col D与表9中的siteID匹配

我没有收到任何错误我只是从我的所有sumif尝试中返回的值0

任何人都可以提供的帮助将非常感激

由于

1 个答案:

答案 0 :(得分:0)

我最终设法找到了我自己的问题的答案,但是如果有人希望使用和改编这些代码或者遇到与我相同的问题,我想在她上面分享它。

SumIf函数的唯一问题是声明第一个范围

.Cells(lngRow, "C") = sumif(rngDS.Columns(3), vntSiteID, rngDS.Columns(7)) 
.Cells(lngRow, "D") = sumif(rngDS.Columns(3), vntSiteID, rngDS.Columns(8)) 

这些应该显示

.Cells(lngRow, "C") = sumif(rngDS, vntSiteID, rngDS.Columns(7)) 
.Cells(lngRow, "D") = sumif(rngDS, vntSiteID, rngDS.Columns(8))