【问题标题】:Problems viewing large numbers in Excel (Scientific Notation) in 'Text' formatted cells在“文本”格式的单元格中查看 Excel(科学记数法)中的大数字时出现问题
【发布时间】:2018-07-30 13:37:05
【问题描述】:

我遇到了一个问题,并没有设法在网上找到解决方案,希望我能走运并且有人可以提供帮助。

我有一个将大型数据集导出到 .xlsx 的数据库应用程序 然后一个 VBA 应用程序将此数据映射到另一个 Excel 应用程序中。

当数据从原始数据库应用程序中导出时,这个过程不在我的控制范围内。所有单元格都有一个“通用”单元格格式,我们有一些大数字,例如172627108914,它是一件设备的序列号。在导出的 xlsx 文件中,此序列号表示为1.72627E+11

流程的下一阶段将此数据复制到另一个工作表中,该工作表的所有单元格都设置为文本格式。值被复制,但值保持不变,单元格的格式从文本更改为常规。

有谁知道我必须做些什么来更改以删除科学记数法?

我使用的是 Microsoft Excel 2010。

谢谢

【问题讨论】:

  • 将序列号的单元格格式从 General 更改为 Text 可能会解决您的问题。
  • 我注意到的一个问题是,当单元格的格式更改为文本时,我双击该值,然后单击该单元格。我想要的值保留在单元格中,并带有一个警告三角形,告诉我该数字已格式化为文本。如果我不双击单元格,科学记数法会保留在单元格中
  • 该警告并没有什么坏处。这只是一个警告。
  • 谢谢,问题是我需要自动执行此操作,以便链末端的应用程序向用户显示准确的序列号
  • 有几个教程如何使用 VBA 将数字转换为文本。你自己有没有尝试过?

标签: excel vba


【解决方案1】:

在数字前面附加一个撇号。这将强制 Excel 自动读取“文本”格式的数字,并且撇号在显示时不会显示在数字的前面。

【讨论】:

  • 不是批评,而是评论,因为您使用的是 16 位数字。几年前我在调查这样一个问题时,不仅是数据转换为数字的问题,而且 Excel 将其截断为 15 位有效数字。我们发现,当客户使用美国运通(15 位)付款时,我们可以从数值中恢复完整的数字。对于 Visa 和 MasterCard,我们需要计算第 16 位并将其加回(如果前 15 位准确,则可以使用)。希望原始海报发布了代表他们遇到的尺寸的数字。
  • 这太有趣了;我在这里包含一个 16 位数字只是随机的机会。几年前,我不得不获得一个 22 位的唯一 ID,并且遇到了类似的问题。我觉得撇号最终成为了解决方案,因为 excel 从来没有机会导入字段并将其转换为数字,因此有效数字在导入时仍然存在。你是如何计算 cc 号码的最后一位数字的?当已知前 15 位时,Luhn 算法是否允许您确定地计算第 16 位?
  • 是的。谢天谢地,校验位是数字中的最后一位数字,否则我们将不得不做一些真正的思考。
【解决方案2】:

感谢大家的帮助,最后编写了一些 VBA 代码来将原始导出中的所有字段转换为文本,然后遍历每个单元格并重写公式行中的值。这导致将格式正确的工作表传递给第二个应用程序

【讨论】:

    猜你喜欢
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    相关资源
    最近更新 更多