这是我尝试的代码:
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
答案 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)
的更多信息