2017-10-11 86 views
0

我需要將列的數據類型從文本更新爲數字,以便我可以使用它來執行進一步的計算。下面的代碼不適合我。你能否建議一個解決這個問題的方法?將文本列的數據類型更改爲數字

Sub ConvertTextToNumber() 

    Dim rRange As Range 
    Dim rCell As Range 
    Dim Rowcount As Long 


    Worksheets("Input").Select 
    Rowcount = Application.CountA(Range("C:C")) 
    Set rRange = ActiveSheet.Range("AQ2:AQ" & Rowcount) 

    For Each rCell In rRange.Cells 

     rCell.Value = rCell.Value * 1 

    Next rCell 

End Sub 

回答

1

嘗試在運行該循環之前將NumberFormat設置爲數字格式。

Set rRange = ActiveSheet.Range("AQ2:AQ" & Rowcount) 
rRange.NumberFormat = "#,##0" ' anything but "@"/text 

For Each rCell In rRange.Cells 
    Debug.Assert IsNumeric(rCell.Value) 'will break if not true 
    rCell.Value = rCell.Value * 1 
Next rCell 

我加了Assert調用中斷執行,如果遇到錯誤;如果rRange包含任何單元格錯誤,則rCell.Value * 1將引起類型不匹配運行時錯誤。

或者你可以直接跳過錯誤的細胞,如果應該的錯誤細胞可以預料:

For Each rCell In rRange.Cells 
    If Not IsError(rCell.Value) Then 
     rCell.Value = rCell.Value * 1 
    End If 
Next rCell 
+0

嗨墊,謝謝您的幫助。我嘗試使用上面分享的代碼,但仍然沒有成功。此外,代碼沒有中斷。我注意到,當我在Excel中手動選擇此列並使用「將文本轉換爲列嚮導」即Alt + D + E + N + N + F快捷方式時,那麼在其公式中引用AQ列的單元格工作正常,按預期填充。 – SK7324

+1

我不知道「轉換文本到列」在哪裏發揮作用。你的問題沒有提及數據的外觀,這個答案假設'rRange'包含一組可用作數字的值。沒有看着你的屏幕的人無法猜測你的數據是什麼樣的。 –

+0

'rRange'的格式是文本,我試圖將其轉換爲數字。謝謝你的幫助 :) – SK7324

相關問題