2012-09-25 9 views
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 
+0

請發佈您的完整代碼 – brettdj

+0

您在found.offset(0,1)和c.offset(0,1)範圍內有什麼值? – nutsch

回答

1

如果found.Offset(0, 1).Value)CInt(C.Offset(0, 1).Value)是字符串值,像"""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 read the link. (same as above)

+0

這是現在給我一個溢出錯誤..我會發布我的所有代碼在我的問題 –

+0

嘗試使用CLng而不是CInt。如果傳遞的值大於等於32768,CInt將失敗。 –

相關問題