将文本格式转换为数字格式
问题描述:
我有一个包含数字列表的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你有什么错误? –