【问题标题】:Convert cell to number将单元格转换为数字
【发布时间】:2017-04-26 13:15:43
【问题描述】:

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

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

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

【问题讨论】:

标签: excel vba


【解决方案1】:

我认为您正在寻找类似的东西

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

【讨论】:

    【解决方案2】:

    在 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

    【讨论】:

      【解决方案3】:

      谢谢你们的回答。使用@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
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-07
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 2021-04-22
        相关资源
        最近更新 更多