为什么即使将单元格格式更改为文本,Excel 仍将长数字字符串视为科学记数法

Mic*_*evy 139 microsoft-excel microsoft-excel-2010 cell-format

我正在尝试在 Excel 中处理一些数据。数据包括数字帐号和其他长数字字符串(如手机 MEID)。我没有对这些字符串进行数学运算,所以我希望 Excel 将它们视为纯文本。

这是让我发疯的原因(这是 Excel 2010):

  1. 取一个像 1240800388917 这样的长数字并将其粘贴到新工作表的单元格中。
  2. Excel 的默认单元格格式是通用的,所以字符串以科学记数法表示为 1.2408E+12
  3. 右键单击单元格,选择设置单元格格式,将格式设置为文本

即使格式已设置为文本,单元格仍以科学记数法显示。

现在,如果我以不同的顺序执行这些步骤:

  1. 将空单元格格式化为文本。右键单击单元格,选择设置单元格格式,将格式设置为文本
  2. 取一个像 1240800388917 这样的长数字并将其粘贴到文本格式的单元格中

现在,单元格显示为字符串而不是科学计数法。

即使将单元格格式化为文本,结果仍以科学记数法形式存在,对我来说似乎已损坏。我已经看到建议的解决方法,例如:使用 CSV 导入并将格式设置为文本,在每个数字字符串的开头添加一个空格字符,等等。

是否有一个简单的好方法可以轻松地将这些字符串格式化为文本?

Excel到底为什么要这样做?

我发现的相关 SU 问题: 如何让 Excel 2007 停止将大数格式化为科学记数法?并且 此 Excel 行为是否预期具有较大的十六进制数?

小智 200

这在 Excel 2010 中对我有用。只需选择列,右键单击,设置单元格格式,自定义并选择显示 0 的选项(常规下方的第二个选项)。

  • 这比公认的“你有点不走运”的答案要好得多!我有一个存在此问题的 CSV 文件,并且自定义格式解决方案运行良好。 (30认同)
  • 这在我的测试中似乎仍然被截断。使用 Excel 2013,我在单元格 12345678901234567890 中输入了以下内容。当我按下 Enter 键时,它显示为 1.23457E+19 并且基础值更改为 12345678901234500000,因此存在数据丢失。这不能回答最初的问题。 (17认同)
  • 此答案修复了格式,但不保留输入的数据。这就是为什么我不能接受它作为正确答案的原因。我发布了一个简短的视频来展示。当您按照这些说明操作,然后输入一个长整数(如 12345678901234567890)时,将其视为数字会失去精度,即使它以非科学符号显示。Excel 将其视为值 12345678901234500000。只有将其视为文本才能保留所有数字。见 https://youtu.be/7EDcR7TQpYs (10认同)
  • 必须接受答案,有人应该/可以改变吗? (5认同)
  • 一年后,我在这里重新审视了相同的答案,并希望我能再次投票。 (2认同)

tan*_*ish 27

啊,当我在 Excel 中进行大量数字交叉检查时(再也不会)回想起数据的记忆。当你在 Excel 中输入长数字字符串时,尝试说,12345678901234567890(20 位),Excel 通常会为你转换它,这意味着您刚刚输入的 20 位数字已被缩减为大约 15 位有效数字。

还要注意:转换是截断,而不是四舍五入。(12345678901234567890 是 1.2345678901234 6 E+19,但 excel 会显示 1.2345678901234 5 E+19)

这发生在入口点,所以一旦它进入,任何额外的细节都会丢失,所以即使你告诉 Excel 你的意思是文本,而不是数字,你有点不走运,这就是为什么你的第一个序列不起作用。

  • 这实际上是一个显示怪癖 - 将格式从常规设置为文本不会立即将其显示为原始字符串,但是如果您进入并编辑数据(如在,只需单击编辑区域并单击退出) 它将更新为您输入的内容。 (7认同)
  • 所以你已经回忆并重申了这个问题。现在,你如何解决它? (5认同)
  • 错误的。它不会在进入点发生。否则下面的答案将不起作用。 (2认同)
  • 当有实际解决方案时,例如将格式更改为“General > 0”,不应接受此“答案” (2认同)

小智 14

我发现在Office 2010中,如果先格式化列,然后粘贴数据,它会正确显示大数。


小智 14

试试这个……这对我有用,Excel 2013。

=""&a1
Run Code Online (Sandbox Code Playgroud)

其中 a1 保存数值。之后,复制该列并粘贴到原始列。

  • 作为侧节点:`="1240800388917"` 也一样 (2认同)

dav*_*dav 13

数字前的单个撇号 ' 将强制 Excel 将数字视为文本(包括默认的左对齐)。如果您标记了错误,它将显示为存储在单元格上的文本错误的数字。

  • Cerin,公平点-永远不要低估 Excel(或 Microsoft)做一些完全无法解释或可重复的事情的能力。然而,撇号技巧通常如宣传的那样有效。 (3认同)

Ace*_*ePL 7

我知道这个问题的年龄,但这是我在谷歌搜索后找到的一个问题,但没有回答我的问题(为什么格式化为文本不起作用,为什么数字在格式化后被缩减为 15 位数字)到文本)。

简短的回答是:在您输入数值并点击 后,您无法按照自己喜欢的方式处理您的号码Enter。当您这样做时,该数字将被截断为 15 位数字并以指数形式显示。

这不是错误,而是功能。

之后你做的任何事情都将使用截断的值,所以没有格式化技巧会有所帮助。但是,您可以使用Text to columns,以指数形式转换为文本选项(点击列标题,单击Text to data,然后DelimitedNext,勾去掉所有的分隔符框,选择TextColumn data formatFinish)有值转换为文本,并立即显示为15位数字。但是,它将只有 15 位数字,因此如果您有更长的数字,则其余部分丢失。

为了使电子表格中的数字与您键入的数字完全相同,您必须将其存储为文本。所以你有两种方法可以做到这一点,但它们只能在编辑之前/期间工作:

  1. 键入/复制值之前,您需要在它前面加上撇号或将单元格格式化为文本,

  2. 您必须像Text输入之前一样格式化目标列。

如果您使用的是方法 1 并且它“有时不起作用”,那么抱歉,您要么做错了,要么启用了某种自动更正(如果您使用撇号和大于 15 位的大数 Excel 将其视为错误的值和带有警告消息的标记单元格,因此此评论不是个人或批评)。

方法 2 非常有用,因为它适用于复制和粘贴,即使是大型数据集。

批量执行此操作的另一种方法是从文本文件中导入值。我敢说这是大多数情况下的唯一方法。并且一定要导入文件,而不仅仅是打开它,因为 Excel 将csv类型视为它的本机格式,并且理所当然地将大数字修剪为 15 位数字。

现在,到最后一个问题。如果您在格式化为文本的 Excel 单元格中输入大数值,只要单元格不够宽,它仍会以科学计数法显示。这很烦人,但是某些 Excel 内部算法的副作用。只需将单元格变宽,您就会每次都看到完整的价值。

  • 我想说这是一个错误,因为这种行为令人发狂并且对人类来说毫无意义。我从来没有想要将长整数转换为电子表示法。 (5认同)

小智 5

您可以将单元格格式化为自定义 > #

这可以在您将数据粘贴到列中后应用,但您必须在保存电子表格之前执行此操作。

我经常使用条形码(UPC),默认情况下,excel 会将它们格式化为科学记数法。让我疯狂!为什么这不是我永远不会知道的选项。


归档时间:

查看次数:

414328 次

最近记录:

5 年,1 月 前