Excel 是什么导致我的类型不匹配?如何修复

Excel 是什么导致我的类型不匹配?如何修复,excel,vba,type-mismatch,Excel,Vba,Type Mismatch,我正在尝试进行平均if计算,但在VBA中没有工作表函数。我收到一个与此行相关的类型不匹配错误,但不知道为什么或如何修复 sumall=sumall+数据集(i,19) 子段触发返回() Application.ScreenUpdating=False Dim段_触发器为布尔值 Dim数据_设置为变量 数据集=范围(“A4:AV75617”) 我想我会坚持多久 对于i=2到UBound(数据集,1) 我想我会和你一样长 暗淡的碳纳米管 cnt=0 sumall=0 公司名称当前周期=数据集(i,

我正在尝试进行平均if计算,但在VBA中没有工作表函数。我收到一个与此行相关的类型不匹配错误,但不知道为什么或如何修复

sumall=sumall+数据集(i,19)
子段触发返回()
Application.ScreenUpdating=False
Dim段_触发器为布尔值
Dim数据_设置为变量
数据集=范围(“A4:AV75617”)
我想我会坚持多久
对于i=2到UBound(数据集,1)
我想我会和你一样长
暗淡的碳纳米管
cnt=0
sumall=0
公司名称当前周期=数据集(i,3)
公司名称前期=数据集(i-1,3)
分段时间=数据集(i,10)
段=数据集(i-1,10)
如果公司名称\u curperiod=公司名称\u prevperiod和分段\u curperiod分段\u prevperiod,则
sumall=sumall+数据集(i,19)
cnt=cnt+1
如果结束
接下来我
如果cnt>0,则
板材(“控制”)。范围(“K6”)=sumall/cnt
如果结束
Application.ScreenUpdating=True
端接头

要调试代码,请运行此版本,并在代码停在“停止”行时,逐步查看数据集(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
子段触发返回()
Application.ScreenUpdating=False
Dim段_触发器为布尔值
Dim数据_设置为变量
数据集=范围(“A4:AV75617”)
我像绳子一样长
对于i=2到UBound(数据集,1)
我想我会和你一样长
暗淡的碳纳米管
cnt=0
sumall=0
公司名称当前周期=数据集(i,3)
公司名称前期=数据集(i-1,3)
分段时间=数据集(i,10)
段=数据集(i-1,10)
如果公司名称\u curperiod=公司名称\u prevperiod和分段\u curperiod分段\u prevperiod,则
停止
s=数据集(i,19)
如果是数字,则MsgBox“是,这是一个数字”
sumall=sumall+数据集(i,19)
cnt=cnt+1
如果结束
接下来我
如果cnt>0,则
板材(“控制”)。范围(“K6”)=sumall/cnt
如果结束
Application.ScreenUpdating=True
端接头
你确定
数据集(i,19)
正在返回一个数字吗?检查
数据集(i,19)
是否属于
类型(或可以隐式转换为
的类型,如
整数
),你可以使用
类型名
功能进行此操作。例如,如果
data\u set(i,19)
的类型为
String
,则至少在您将
data\u set(i,19)
中的任何内容转换为可以添加到Long中的值之前,您无法添加它。