VBA Excel SumIf返回0
我正在使用下面代码中的SumIf函数来计算第309列(=要求和的内容)中所有字符串VALRC(=要查找的内容)的总和。该代码不会导致运行时错误,但尽管应该有结果,Excel只返回0VBA Excel SumIf返回0,vba,excel,Vba,Excel,我正在使用下面代码中的SumIf函数来计算第309列(=要求和的内容)中所有字符串VALRC(=要查找的内容)的总和。该代码不会导致运行时错误,但尽管应该有结果,Excel只返回0 On Error GoTo Errorhandler ValSrc = Cells(a, 48).Value & "/DIR/" & Cells(4, a).Value ValFnd = Application.WorksheetFunction.SumIf(Range(Cells(5, 309),
On Error GoTo Errorhandler
ValSrc = Cells(a, 48).Value & "/DIR/" & Cells(4, a).Value
ValFnd = Application.WorksheetFunction.SumIf(Range(Cells(5, 309), Cells(105673, 309)), Range(Cells(5, 308), Cells(105673, 308)), ValSrc)
Cells(a, b) = ValFnd
编辑:
Sub Gewichte_SumIf()
Dim a As Integer, b As Integer
Dim ValSrc As Variant, ValFnd As Double
For a = 5 To 5
For b = 49 To 300
If Cells(a, 306) > 0 Then
If Cells(3, b) = Cells(a, 33) Then
On Error GoTo Errorhandler
'ValSrc = .Cells(a, 48).Value & "/DIR/" & .Cells(4, a).Value
With Worksheets("DS_(2)_Abfragen")
Val Fnd = Application.WorksheetFunction.SumIf(.Range(.Cells(5, 309), .Cells(105673, 309)), .Range(.Cells(5, 308), .Cells(105673, 308)), "53.541331,10.033631<53.4977094,10.1118412<52.9314509,9.2331748<monday/DIR/39454")
.Cells(a, b) = ValFnd
End With
Else
Cells(a, b) = ""
End If
Else
End If
Next b
Next a
Exit Sub
Errorhandler:
Cells(a, b) = 0
Resume Next
End Sub
Sub-Gewichte_-SumIf()
将a设置为整数,将b设置为整数
尺寸VALRC为变型,ValFnd为双精度
对于a=5到5
对于b=49至300
如果单元(a,306)>0,则
如果单元格(3,b)=单元格(a,33),则
关于错误转到错误处理程序
'ValSrc=.Cells(a,48).Value&“/DIR/”&.Cells(4,a).Value
带工作表(“DS_u2)\u Abfragen”)
Val Fnd=Application.WorksheetFunction.SumIf(.Range(.Cells(5309),.Cells(105673309)),.Range(.Cells(5308),.Cells(105673308)),“53.541331,10.033631使用.Cells
和.Range
参考正确的工作表。类似于:
With Worksheets("Name-Of-Worksheet")
ValSrc = .Cells(a, 48).Value & "/DIR/" & .Cells(4, a).Value
ValFnd = Application.WorksheetFunction.SumIf(.Range(.Cells(5, 309), .Cells(105673, 309)), .Range(.Cells(5, 308), .Cells(105673, 308)), ValSrc)
.Cells(a, b) = ValFnd
End With
如果不这样做,它将使用ActiveSheet
,而这可能不是您所需要的
“代码不会导致运行时错误,但尽管应该有结果,Excel只会返回0。”-它返回0,因为错误转到Errorhandler
。删除此行并查看运行时错误。SumIf的参数为:
ValFnd = Application.WorksheetFunction.SumIf(Range(Cells(5, 308), Cells(105673, 308)), _
ValSrc, _
Range(Cells(5, 309), Cells(105673, 309)))
您是否检查了
ValSrc
的内容?它是否真的包含您正在搜索的字符串?根据本地窗口,ValSrc的内容是正确的,但我不确定它是否在函数中被接受为字符串。@FunThomasThat这不是问题,因为只使用了一个工作表。但是考虑到dime可能会有问题吗分类/类型@Vityata@Masterarbeit3-阅读文档并检查您是否正确引用了单元格。例如,单元格(5309)
表示第5行第309列,而不是单元格E309
。这不是问题,引用是正确的,但问题在于类型(运行时错误13)@Masterarbeit3-如何声明ValFnd
和ValSrc
并尝试编写debug.print Application.WorksheetFunction.SumIf(.Range(.Cells…
)以查看您是否得到了一些东西。