我使用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
这段代码的目的是遍历表9中的col B(它保存报表上每个站点的列表),然后对表3中每个请求列中的所有值求和,只要站点保持在表3 col D与表9中的siteID匹配
我没有收到任何错误我只是从我的所有sumif尝试中返回的值0
任何人都可以提供的帮助将非常感激
由于
答案 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))