【问题标题】:Excel VBA convert everything to textExcel VBA 将所有内容转换为文本
【发布时间】:2022-01-04 17:40:44
【问题描述】:

我尝试将我的数据转换为文本。但它不是真正的文本?如果这有意义的话。

所以,这是我的代码

Dim rng As Range
Set rng = wb.Sheets(1).Range("A1"). CurrentRegion
rng.NumberFormat = "@"

此代码会将所有内容转换为“文本”,但是当我选择一些数字时,它会在右下角显示总和,而该文本不应该这样做。

第二件事是,当我把它转换成“文本”后,我意识到我必须点击单元格,按回车,然后它就会真正变成文本格式......

【问题讨论】:

  • 设置数字格式不会转换数据,它只是定义了你想如何显示数据。
  • 查看在vba中将数据转换为字符串数据类型
  • @FunThomas,你有什么想法,我如何才能真正将它们全部转换为文本?我的数据由数字和字符组成。
  • @Brett,注意!会尝试。谢谢!
  • @jayl 作为一个友好的专业提示,使用text to columns 功能可以轻松地将文本数字转换为数字,方法是选择整行,按文本到列,然后按 OK 而不输入任何选项

标签: excel vba type-conversion


【解决方案1】:

将数字转换为文本

  • 请注意,数字前面的单引号将被忽略。获取它的长度或连接来证明它。
Option Explicit

Sub ConvertToText()

    Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
    Dim rng As Range: Set rng = wb.Sheets(1).Range("A1").CurrentRegion
    'rng.NumberFormat = "@" ' with or without
    Dim cCell As Range
    For Each cCell In rng.Cells
        If IsNumeric(cCell.Value) Then
            cCell.Value = "'" & CStr(cCell.Value)
        End If
    Next cCell

End Sub

【讨论】:

  • 嗨,这段代码,没有把我的日期格式化成文本,知道吗?
  • 只在循环中尝试cCell.Value = "'" & cCell.Text(没有Ifs)。
  • 嗨@VBasic2008,谢谢!!现在可以了!但是我仍然有一个问题-数字非常大(例如,90100100072625)
  • 最多 15 位数字,cCell.Value 将显示“完整”号码,但 cCell.Text 不会。要么实现一个 If 语句来覆盖这一点,要么将包含这些数字的单元格格式化为带有 0 小数的数字以避免科学记数法。作为第 3 个选项,即使超过 15 位,您也可以在输入这些数字时始终在数字前使用单引号 (')。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
  • 2018-08-26
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多