0

这是我尝试的代码:

Set found = Worksheets("Result").Range("A:A").Find(Prefix, , xlValues, xlWhole)
found.Offset(0, 1).Value = CInt(found.Offset(0, 1).Value) + CInt(C.Offset(0, 1).Value)

前缀是在列中找到的 3 位数字,然后我想要做的是在“C”右侧的一个单元格中找到它的右侧的单元格。我收到类型不匹配错误。

这是 c 的来源:

For Each C In Worksheets("AMZ").Range("C2:C" & endRow).Cells

有任何想法吗?

编辑:完整代码

Sub processData()

Dim endRow As Variant
endRow = Worksheets("AMZ").Range("A65536").End(xlUp).Row

For Each C In Worksheets("AMZ").Range("C2:C" & endRow).Cells
    Dim found As Range
    Prefix = C.Value
    C.Select

    'remove prefix
    If Not Left(Prefix, 3) = "FBA" Then
        'nothing
        If Mid(Prefix, 3, 1) = "-" Then
            Prefix = Left(Prefix, 2)
        ElseIf Mid(Prefix, 4, 1) = "-" Then
            Prefix = Left(Prefix, 3)
        Else
            Prefix = "-1"
        End If

        If Not Prefix = "-1" Then
            Set found = Worksheets("Result").Range("A:A").Find(Prefix, , xlValues, xlWhole)
            found.Offset(0, 1).Value = CInt(Val(found.Offset(0, 1).Value)) + CInt(Val(C.Offset(0, 1).Value))
        End If
    End If
Next

End Sub
4

1 回答 1

1

如果found.Offset(0, 1).Value)orCInt(C.Offset(0, 1).Value)是字符串值,例如""or"1234hello"或任何不直接转换为整数的值,则会收到您列出的错误。

更正此问题的最简单方法是用Val(string)函数包围该值。在您的情况下,您将使用以下内容

found.Offset(0, 1).Value = CInt(Val(found.Offset(0, 1).Value)) + CInt(Val(C.Offset(0, 1).Value))

关于 Val 的说明,如果您提供的值不可能是数字,它将默认为 0。否则它将在提供的字符串的开头采用任何数字。有关Val 的更多信息,请阅读链接。(同上)

于 2012-09-25T02:48:52.740 回答