将单元格转换为数字
我正在创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
我提供了其他代码提供的代码,因为它更快,大概是因为它没有使用循环。 我不知道这个代码有多好,但它对我有用。