【问题标题】:SumIf returns value of 0 when using worksheet.function SumIfSumIf 在使用 worksheet.function SumIf 时返回值 0
【发布时间】:2017-12-06 22:56:46
【问题描述】:

我用excel的worksheetfunction创建了一个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 中每个请求列中的所有值求和,只要站点保留在sheet 3 col D 与 sheet 9 中的 siteID 匹配

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

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

谢谢

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    我最终设法找到了我自己问题的答案,但我想我会分享给她,以防有人希望使用和修改此代码或遇到与我相同的问题。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-28
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      相关资源
      最近更新 更多