2017-10-11 90 views
0

我需要将列的数据类型从文本更新为数字,以便我可以使用它来执行进一步的计算。下面的代码不适合我。你能否建议一个解决这个问题的方法?将文本列的数据类型更改为数字

Sub ConvertTextToNumber() 

    Dim rRange As Range 
    Dim rCell As Range 
    Dim Rowcount As Long 


    Worksheets("Input").Select 
    Rowcount = Application.CountA(Range("C:C")) 
    Set rRange = ActiveSheet.Range("AQ2:AQ" & Rowcount) 

    For Each rCell In rRange.Cells 

     rCell.Value = rCell.Value * 1 

    Next rCell 

End Sub 

回答

1

尝试在运行该循环之前将NumberFormat设置为数字格式。

Set rRange = ActiveSheet.Range("AQ2:AQ" & Rowcount) 
rRange.NumberFormat = "#,##0" ' anything but "@"/text 

For Each rCell In rRange.Cells 
    Debug.Assert IsNumeric(rCell.Value) 'will break if not true 
    rCell.Value = rCell.Value * 1 
Next rCell 

我加了Assert调用中断执行,如果遇到错误;如果rRange包含任何单元格错误,则rCell.Value * 1将引起类型不匹配运行时错误。

或者你可以直接跳过错误的细胞,如果应该的错误细胞可以预料:

For Each rCell In rRange.Cells 
    If Not IsError(rCell.Value) Then 
     rCell.Value = rCell.Value * 1 
    End If 
Next rCell 
+0

嗨垫,谢谢您的帮助。我尝试使用上面分享的代码,但仍然没有成功。此外,代码没有中断。我注意到,当我在Excel中手动选择此列并使用“将文本转换为列向导”即Alt + D + E + N + N + F快捷方式时,那么在其公式中引用AQ列的单元格工作正常,按预期填充。 – SK7324

+1

我不知道“转换文本到列”在哪里发挥作用。你的问题没有提及数据的外观,这个答案假设'rRange'包含一组可用作数字的值。没有看着你的屏幕的人无法猜测你的数据是什么样的。 –

+0

'rRange'的格式是文本,我试图将其转换为数字。谢谢你的帮助 :) – SK7324

相关问题