将单元格转换为数字

我正在创build一个macros来处理Excel中的一些数据,并为我创build一个报告。 问题是,一些提供的数据存储为文本。

我很新的VB,所以我到目前为止的技巧是logging所需的行动作为一个macros,然后复制粘贴到我的代码子程序。 但是,在这种情况下,这似乎不起作用。 我通常做的是select单元格,然后单击! popup错误菜单,然后select“转换为数字”。

转换为数字对话框

什么是我需要将选定的单元格从文本转换为数字的VB代码?

我想你正在寻找这样的事情

 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 Next End Sub 

在VBA中将string转换为数字:

对于单个单元,请使用CDbl:

 myVar = "123" 'a string Cells("A1") = CDbl(myVar) 'converted to double. 

对于一个范围:

 Range("A1:A50").NumberFormat = "0" 

对于整个列

 Columns(1).NumberFormat = "0" 

有关更多NumberFormat选项,请参阅此文章 。

感谢您的答案家伙。 使用@PeterT提供的链接,并修改@brettdj提供的解决scheme,我已经设法回答我自己的问题。 我使用的代码是:

 Sub ConvertTextNumberToNumber(CellSelect) Dim rng1 As Range Sheets("Raw Data").Select Range(CellSelect).Select Set rng1 = Range(Selection, Selection.End(xlDown)).SpecialCells(xlCellTypeConstants, 2) If rng1 Is Nothing Then Exit Sub Cells(Rows.Count, Columns.Count).Copy rng1.PasteSpecial Paste:=xlPasteValues, Operation:=xlAdd End Sub 

我提供了其他代码提供的代码,因为它更快,大概是因为它没有使用循环。 我不知道这个代码有多好,但它对我有用。