我正在尝试计算平均值,但是在没有工作表功能的VBA中。我收到与此行相关的类型不匹配错误,但不知道为什么或如何解决?
sumall = sumall + data_set(i, 19)
Sub segment_trigger_returns()
Application.ScreenUpdating = False
Dim segment_trigger As Boolean
Dim data_set As Variant
data_set = Range("A4:AV75617")
Dim i As Long
For i = 2 To UBound(data_set, 1)
Dim sumall As Long
Dim cnt As Long
cnt = 0
sumall = 0
company_name_curperiod = data_set(i, 3)
company_name_prevperiod = data_set(i - 1, 3)
segments_curperiod = data_set(i, 10)
segments_prevperiod = data_set(i - 1, 10)
If company_name_curperiod = company_name_prevperiod And segments_curperiod <> segments_prevperiod Then
sumall = sumall + data_set(i, 19)
cnt = cnt + 1
End If
Next i
If cnt > 0 Then
Sheets("Control").Range("K6") = sumall / cnt
End If
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:-2)
要调试您的代码,请运行此版本,然后在代码停止在“停止”行上时,跨步查看data_set(i,19)是否为数字。
Sub segment_trigger_returns()
Application.ScreenUpdating = False
Dim segment_trigger As Boolean
Dim data_set As Variant
data_set = Range("A4:AV75617")
Dim i As Long, s as string
For i = 2 To UBound(data_set, 1)
Dim sumall As Long
Dim cnt As Long
cnt = 0
sumall = 0
company_name_curperiod = data_set(i, 3)
company_name_prevperiod = data_set(i - 1, 3)
segments_curperiod = data_set(i, 10)
segments_prevperiod = data_set(i - 1, 10)
If company_name_curperiod = company_name_prevperiod And segments_curperiod <> segments_prevperiod Then
stop
s = data_set(i, 19)
If IsNumeric(s) then MsgBox "Yes, it's a number"
sumall = sumall + data_set(i, 19)
cnt = cnt + 1
End If
Next i
If cnt > 0 Then
Sheets("Control").Range("K6") = sumall / cnt
End If
Application.ScreenUpdating = True
End Sub