我正在创建一个宏来处理Excel中的某些数据并为我创建报告。问题是一些提供的数据存储为文本。
我是VB的新手,所以我到目前为止的技巧是将所需的操作记录为宏,然后将该子例程复制粘贴到我的代码中。但是,在这种情况下,这似乎不起作用。我通常做的是选择单元格,然后单击出现的!
弹出错误菜单,选择“转换为数字”。
将所选单元格从文本转换为数字需要什么VB代码?
答案 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
我使用其他代码提供此代码,因为它更快,大概是因为它没有使用循环。 我不知道代码有多好,但它对我有用。