excel将单元格值一起添加并添加一个新单元格

时间:2012-09-25 00:07:54

标签: excel vba

这是我尝试的代码:

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

1 个答案:

答案 0 :(得分:1)

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

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

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

关于Val的说明,如果您提供的值不可能是数字,则默认为0.否则,它将在提供的字符串的开头采用任何数字。有关Val read the link. (same as above)

的更多信息