2017-07-03 59 views
0

我创建使用Excel的worksheetfunction一个SUMIF函数时返回值为0,请参见下面SUMIF使用worksheet.function 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中的列B(这包含报告中的每个站点的列表),然后在表格3中的每个请求的列中对所有值进行求和,只要站点保存在表格中3山坳d从纸张相匹配的siteID 9

我没有收到任何错误,我只是得到0从我的所有SUMIF返回的值试图

任何帮助,任何人都可以提供将不胜感激

感谢

回答

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