Sub tester()
Dim total As Integer
Dim z As Integer
For z = 4 To 90
If Not IsNull(Range("c" & z)) Then
total = total + Application.WorksheetFunction.Index(Range("h2:h69171"), Application.WorksheetFunction.Match(Cells("c" & z) & Cells("A98").Value, Range("l2:l69171"), 1))
End If
Next z
Range("b98").Value = total
End Sub
这段代码给了我一个"方法'范围'对象' _Global'失败" (在If ...行上)。有人可以帮我弄清楚原因吗?提前致谢
答案 0 :(得分:2)
Sub tester()
Dim total As Integer
Dim z As Integer
Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction
With Sheet1
For z = 4 To 90
If Not IsEmpty(.Cells(z, 3).Value) Then
total = total + wf.Index(.Range("h2:h69171"), wf.Match(.Cells(z, 3).Value & .Cells(98, 1).Value, .Range("L2:L69171"), 1), 1)
End If
Next z
.Range("b98").Value = total
End With
End Sub
Cells采用行和列参数。并且最好为所有范围引用添加一个工作表 - 我使用With Block并使用句点启动范围引用来完成该工作。
此外,当您不向INDEX提供列参数时,它将返回整行。
我创建了一个wf变量,只是为了保持代码的简洁和可读性。