2017-07-03 82 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))