将单元格转换为数字

时间:2015-04-03 12:56:06

标签: excel vba

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

我是VB的新手,所以我到目前为止的技巧是将所需的操作记录为宏,然后将该子例程复制粘贴到我的代码中。但是,在这种情况下,这似乎不起作用。我通常做的是选择单元格,然后单击出现的!弹出错误菜单,选择“转换为数字”。

Convert to Number dialog

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

3 个答案:

答案 0 :(得分:4)

我认为你正在寻找像这样的东西

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

答案 1 :(得分:3)

要在VBA中将字符串转换为数字:

对于单个细胞,请使用CDbl:

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

对于范围:

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

对于整个列

Columns(1).NumberFormat = "0"

有关更多NumberFormat选项,请参阅this post

答案 2 :(得分:1)

感谢您的回答。使用@PeterT提供的链接并修改@brettdj在所述链接中提供的解决方案,我已经设法回答了我自己的问题。我正在使用的代码是:

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

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

相关问题