2015-04-03 108 views
0

我正在創建一個宏,該宏將操縱Excel中的一些數據併爲我創建一個報表。問題是一些提供的數據以文本形式存儲。將單元格轉換爲數字

我很新的VB,所以我到目前爲止的技巧是記錄所需的行動作爲宏,然後複製粘貼到我的代碼子程序。但是,這似乎不適用於這種情況。我通常所做的是選擇單元格,然後單擊出現的彈出式錯誤菜單並選擇「轉換爲數字」。

Convert to Number dialog

什麼是VB代碼,我需要選擇細胞轉變從文本到數字?

+0

這是[VBA將文本轉換爲除公式和非數字文本之外的數字的副本](http://stackoverflow.com/questions/20408689/vba-to-convert-texts-to-numbers-except-式 - 和 - 非數字-文本)。該線程有一個完整的解決方案。 – PeterT 2015-04-03 13:01:40

+0

謝謝@PeterT,我尋找解決方案(不認爲我會成爲第一個),但它沒有出現在我的任何搜索中。也許是因爲我沒有在我的搜索查詢中使用VBA ......無論如何,再次感謝! – 2015-04-03 13:03:43

+1

請參閱[本主題]中的附錄(http://stackoverflow.com/questions/28920305/vba-remove-from-cell-content-in-a-range/28920651?s=3|0.9261#28920651)。 – Jeeped 2015-04-03 13:05:34

回答

1

感謝您的答案傢伙。使用@PeterT提供的鏈接並修改@brettdj提供的解決方案,我已經設法回答了我自己的問題。我使用的代碼是:

Sub ConvertTextNumberToNumber(CellSelect) 

Dim rng1 As Range 

Sheets("Raw Data").Select 

Range(CellSelect).Select 
Set rng1 = Range(Selection, Selection.End(xlDown)).SpecialCells(xlCellTypeConstants, 2) 
If rng1 Is Nothing Then Exit Sub 
Cells(Rows.Count, Columns.Count).Copy 
rng1.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd 
End Sub 

我去這個代碼上設置,因爲它的速度更快,大概是因爲它並沒有使用循環其他代碼。 我不知道代碼有多好,但它適用於我。

4

我認爲你正在尋找這樣的事情

Sub ConvertTextNumberToNumber() 
For Each WS In Sheets 
On Error Resume Next 
For Each r In WS.UsedRange.SpecialCells(xlCellTypeConstants) 
If IsNumeric(r) Then r.Value = Val(r.Value) 
Next 
Next 
End Sub 
3

爲了將字符串轉換爲數字在VBA:

對於單個細胞,使用CDbl:

myVar = "123" 'a string 
Cells("A1") = CDbl(myVar) 'converted to double. 

對於範圍:

Range("A1:A50").NumberFormat = "0" 

對於一整列

Columns(1).NumberFormat = "0" 

有關詳細的NumberFormat選項,請參見this post

相關問題