我尝试将此文本转换为数字:
我尝试了不同的公式,但Excel无法识别格式。 但是,使用下面的代码只转换前三个数字并删除其余数字。
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 r
Next WS
End Sub
结果如下所示
有没有人可以轻松修复此问题而不删除任何数字?
答案 0 :(得分:6)
转换存储为文字的数字的最简单方法是将其乘以1
,
所以试试这个If IsNumeric(r) Then r.Value = (r.Value)*1
或者你可以复制粘贴乘以1,这也适用! ;)
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 = (r.Value)*1
''Or test the values in the next column on the right
'If IsNumeric(r) Then r.Offset(0,1).Value = (r.Value)*1
Next r
Next WS
End Sub
答案 1 :(得分:1)
提供与OP声明相关的答案:
我尝试了不同的公式,但Excel没有认识到 格式。
无需使用VBA进行该操作。
如果您的小数字符是句点[。]
,请使用此公式=SUM( SUBSTITUTE( SUBSTITUTE( B2, " ", "" ), ",", "." ) )
如果您的小数字符是冒号[,]
,则为此=SUM( SUBSTITUTE( B2, " ", "" ) )
答案 2 :(得分:0)
如果您的数据始终使用"空格"作为千分隔符和"逗号"作为小数点,您可以使用以下内容(从原始脚本中修改)。
Sub ConvertTextNumberToNumber()
For Each WS In Sheets
On Error Resume Next
For Each r In WS.UsedRange.SpecialCells(xlCellTypeConstants)
'For testing purposes I like to see the cell which is selected
r.Select
'Setting the Cell Number Format
'for more or less decimals just add/remove 0 after the .
r.NumberFormat = "0.00"
'Assigning the Cell value to a String
String1 = r.Value
'Replacing the spaces with no space
String1 = Replace(String1, " ", "")
'Replacing the comma with a point
String1 = Replace(String1, ",", ".")
'Putting the new value into the cell
r.Value = String1
Next r
Next WS
End Sub