在Excel VBA中将数字存储为文本的最简单的方法

我试图将这个文本转换成数字:

在这里输入图像说明

我已经尝试过不同的公式,但是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 

结果看起来像这样

在这里输入图像说明

有没有人有一个简单的修复这个没有删除任何数字?

提供与OP声明有关的答案:

我已经尝试过不同的公式,但是Excel不能识别格式。

这个操作不需要使用VBA。

如果您的小数字符是句点[。],请使用此公式

 =SUM( SUBSTITUTE( SUBSTITUTE( B2, " ", "" ), ",", "." ) ) 

或者这个如果你的小数字符是冒号[,]

 =SUM( SUBSTITUTE( B2, " ", "" ) ) 

在这里输入图像说明

最简单的方式来转换一个数字存储为文本,是乘以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 

如果您的数据始终使用“空格”作为千位分隔符,“逗号”作为小数点,则可以使用以下内容(从原始脚本进行修改)。

 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 

就个人而言,我会使用Cdbl中的Cdbl将其转换为双精度types。 一定要设置单元格的数字格式。

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