2016-09-30 81 views
0

我有一個包含數字列表的Excel工作表。任何低於10所示爲00格式,但它有綠色的小箭頭,表示一個錯誤,我必須單擊並選擇「轉換爲數字」,如下圖所示:將文本格式轉換爲數字格式

Tooltip Convert To Number

如何轉換到這些數字沒有手動做?如果我嘗試錄製宏,它不會記錄任何內容。

回答

2

這將找到最後一行數據,然後轉換活動列中的任何文本「數字」。

Sub Convert_Text_Num() 

Dim lngCounter As Long 
Dim rCell As Range 
Dim strRange As String 
Dim lngCol As Long 

lngCounter = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row 'Find last row of data 
lngCol = ActiveCell.Column 

vArr = Split(Cells(1, lngCol).Address(True, False), "$") 
Col_Letter = vArr(0) 

strRange = Col_Letter & "1:" & Col_Letter & lngCounter 


     For Each rCell In Range(strRange).Cells 

      rCell.NumberFormat = "General" 
      rCell.Value = rCell.Value 

     Next rCell 

MsgBox "All Done!", vbOKOnly + vbInformation, Now() 

End Sub 
+0

這些都有效,但這是最適合我的。謝謝你們! – TCassa

+0

我也喜歡這個,但由於某種原因,它不適合我:) –

+0

@IvanTokarev你有什麼錯誤? –

5

幾種可能性。如果他們忠實地是數字:有時這就夠了:

range("A1:A1000").numberformat="0.00" 

range("A1:A1000").value=range("A1:A1000").value 'yes it looks soooo dumb 

否則,把它放在一個載體,每個使用cdbl()。您可能需要使用「替換」來替換錯誤的小數分隔符

2

看起來像@Skip Intro sollition並不總是適用於Excel 2010及更高版本,因爲我在多臺機器上都沒有結果,沒有錯誤。

所以我做了一個新的腳本,這對我來說工作得很好:

Sub convert_text_to_numbers() 

Dim varCounter As Integer 
Dim varCellInRange, tableRange, startingCell, endingCell As Range 

Set startingCell = Cells(1, 1) 
Set endingCell = Cells.Cells(Cells.SpecialCells(xlLastCell).Row, Cells.SpecialCells(xlLastCell).Column) 
Set tableRange = Range(startingCell, endingCell) 

varCounter = 0 
For Each varCellInRange In tableRange 
    If IsNumeric(varCellInRange) Then 
     varCellInRange.Value = Val(varCellInRange) 
     varCounter = varCounter + 1 
    End If 
Next 

MsgBox ("Converted " & varCounter & " instances") 

End Sub 

老答案:

我用一個小騙子這一點,不能說這是完美的,但你可以嘗試它自己:

Sub fixNumberFormats() 

    Columns("A:A").TextToColumns 

End Sub 

相反柱(「A:A」),如果需要通過修改代碼一點就可以解決特定的細胞。

相關問題