我有一個包含數字列表的Excel工作表。任何低於10所示爲00格式,但它有綠色的小箭頭,表示一個錯誤,我必須單擊並選擇「轉換爲數字」,如下圖所示:將文本格式轉換爲數字格式
如何轉換到這些數字沒有手動做?如果我嘗試錄製宏,它不會記錄任何內容。
我有一個包含數字列表的Excel工作表。任何低於10所示爲00格式,但它有綠色的小箭頭,表示一個錯誤,我必須單擊並選擇「轉換爲數字」,如下圖所示:將文本格式轉換爲數字格式
如何轉換到這些數字沒有手動做?如果我嘗試錄製宏,它不會記錄任何內容。
這將找到最後一行數據,然後轉換活動列中的任何文本「數字」。
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
幾種可能性。如果他們忠實地是數字:有時這就夠了:
range("A1:A1000").numberformat="0.00"
range("A1:A1000").value=range("A1:A1000").value 'yes it looks soooo dumb
否則,把它放在一個載體,每個使用cdbl()。您可能需要使用「替換」來替換錯誤的小數分隔符
看起來像@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」),如果需要通過修改代碼一點就可以解決特定的細胞。
這些都有效,但這是最適合我的。謝謝你們! – TCassa
我也喜歡這個,但由於某種原因,它不適合我:) –
@IvanTokarev你有什麼錯誤? –