我正在创建一个宏,该宏将操纵Excel中的一些数据并为我创建一个报表。问题是一些提供的数据以文本形式存储。将单元格转换为数字
我很新的VB,所以我到目前为止的技巧是记录所需的行动作为宏,然后复制粘贴到我的代码子程序。但是,这似乎不适用于这种情况。我通常所做的是选择单元格,然后单击出现的弹出式错误菜单并选择“转换为数字”。
什么是VB代码,我需要选择细胞转变从文本到数字?
我正在创建一个宏,该宏将操纵Excel中的一些数据并为我创建一个报表。问题是一些提供的数据以文本形式存储。将单元格转换为数字
我很新的VB,所以我到目前为止的技巧是记录所需的行动作为宏,然后复制粘贴到我的代码子程序。但是,这似乎不适用于这种情况。我通常所做的是选择单元格,然后单击出现的弹出式错误菜单并选择“转换为数字”。
什么是VB代码,我需要选择细胞转变从文本到数字?
感谢您的答案家伙。使用@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
我去这个代码上设置,因为它的速度更快,大概是因为它并没有使用循环其他代码。 我不知道代码有多好,但它适用于我。
我认为你正在寻找这样的事情
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:
对于单个细胞,使用CDbl:
myVar = "123" 'a string
Cells("A1") = CDbl(myVar) 'converted to double.
对于范围:
Range("A1:A50").NumberFormat = "0"
对于一整列
Columns(1).NumberFormat = "0"
有关详细的NumberFormat选项,请参见this post。
这是[VBA将文本转换为除公式和非数字文本之外的数字的副本](http://stackoverflow.com/questions/20408689/vba-to-convert-texts-to-numbers-except-式 - 和 - 非数字-文本)。该线程有一个完整的解决方案。 – PeterT 2015-04-03 13:01:40
谢谢@PeterT,我寻找解决方案(不认为我会成为第一个),但它没有出现在我的任何搜索中。也许是因为我没有在我的搜索查询中使用VBA ......无论如何,再次感谢! – 2015-04-03 13:03:43
请参阅[本主题]中的附录(http://stackoverflow.com/questions/28920305/vba-remove-from-cell-content-in-a-range/28920651?s=3|0.9261#28920651)。 – Jeeped 2015-04-03 13:05:34