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


117

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

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

  1. 取一个长为1240800388917的数字,然后将其粘贴到新工作表的单元格中。
  2. Excel的默认单元格格式为常规,因此该字符串以科学计数形式表示为1.2408E + 12
  3. 右键单击该单元格,选择“设置单元格格式”,将格式设置为“文本”

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

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

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

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

即使单元格的格式设置为文本,但结果仍然保留在科学计数法中。我看到了建议的解决方法,例如:使用CSV导入并将格式设置为文本,在每个数字字符串的开头添加一个空格字符,等等。

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

为什么地球上Excel会这样做?

我发现了相关的SU问题: 如何使Excel 2007停止将大量数字格式化为科学计数法?并且 该Excel行为具有预期的大十六进制数吗?


长号1240800388917是从另一个单元格复制的吗?还是纯文本,例如从记事本中?
威尔逊2012年

Answers:


24

嗯,数据的记忆从我在Excel中进行大量的数字交叉检查(再也没有)回过头来。当您将长数字字符串打入Excel时,尝试说12345678901234567890(20位),Excel通常会为您转换,这意味着您刚刚输入的20位数字已减少到只有15位有效数字。

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

这是在入口点发生的,因此一旦输入,所有其他详细信息都会丢失,因此即使您告诉Excel您确实是文本而不是数字,也有点不走运,因此为什么您的第一个序列不起作用。


1
是的,当我的数字字符串包含超过15个有效数字时,我会看到这种行为。如您所说,12345678901234567890变为1.23456789012345E + 19。当我单击单元格时,编辑框将显示字符串被截断并用零填充的字符串,如12345678901234500000。奇怪的是,它对不超出excel 15位数字限制的数字也具有相同的作用。如果我粘贴12345678901234,它显示为1.23457E + 13,但是当我单击它时,编辑框仍显示原始字符串。现在,奇怪的是,如果我将此单元格格式化为文本,它仍然以科学计数法显示。烦死了
Michael Levy 2012年

7
那实际上是一个显示怪癖-将格式从常规设置为文本不会立即将其显示为原始字符串,但是如果您进入并编辑数据(例如,只需单击进入编辑区域并单击即可)它会更新是你把什么英寸
tanantish

11
快速技巧:在适当的列上设置格式,将粘贴复制到记事本,然后复制到Excel。
布赖恩

9
这不应该是可接受的答案:请参阅下面的下一个。
javadba

3
因此,您已回忆并重申了该问题。现在,您如何解决它?
user3932000 '18

162

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


25
这比公认的回答“您有点不走运”要好得多!我有一个存在此问题的CSV文件,并且自定义格式解决方案运行完美。
davidair

4
必须接受答案,有人应该/可以改变吗?
qwertzman 2015年

11
这似乎在我的测试中被截断了。使用Excel 2013,我在单元格12345678901234567890中输入了以下内容。当我按Enter键时,该字段显示为1.23457E + 19,并且基础值更改为12345678901234500000,因此会丢失数据。这不能回答原始问题。
Michael Levy

1
一年后,我在这里重新访问了相同的答案,希望我能再次投票赞成。
billynoah

7
此答案可修复格式,但不会保留输入的数据。这就是为什么我不能接受它作为正确答案。我发布了一个短片来展示。当您按照这些说明进行操作,然后输入一个长整数(如12345678901234567890)时,即使将其视为非科学符号显示,也将失去精度。Excel将其视为值12345678901234500000。只有将其视为文本,您才能维护所有数字。见youtu.be/7EDcR7TQpYs
Michael Levy

13

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


这并非总是如此。Excel有时甚至用引号引起来也破坏了我的数据。
塞林(Cerin)

3
塞林(Cerin),一点也不曾低估Excel(或Microsoft)做完全无法解释或可重复的事情的能力。但是,撇号技巧通常按广告中的说明工作。
2015年

1
您可以批量执行此操作吗?我有60000个单元格要转换为文本的数据。
vaibhavcool20

或者,只需在右键单击“设置单元格格式”菜单中选择设置为文本格式;)
Shayan

13

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


那可能是因为它存储为字符串。如果将另一个单元格的内容乘以2,该怎么办?
彼得·莫滕森

1
这在Excel 2016 / Office 365中有效。我选择了所有单元格,将它们格式化为“文本”,然后粘贴我复制的数据,但并没有显示出令人讨厌的科学符号。谢谢!
frezq

这在Google表格中也对我有用...在粘贴val之前,“格式>数字> 0”,并且没有转换为科学计数法,同时也不会丢失最终值(val的舍入),这种情况经常发生。
twknab

12

尝试一下...这对我有用,Excel 2013。

=""&a1

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


这也适用于Excel 2010。
Paul G

2
作为边节点:="1240800388917"一样

5

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

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

我经常处理条形码(UPC),默认情况下excel会将其格式化为科学计数法。让我疯狂!为什么这不是我永远不会知道的选择。


但是,这不会将数字转换为文本,这可能会在以后引起问题。但好吧……
Joris Meys 2016年

5

我知道这个问题的年龄,但是这是我在Google搜索之后找到的那个问题,并且没有回答我的问题(为什么格式化为文本无效,为什么数字在格式化后会减少到15位到文本)。

简短的答案是:输入数字并点按之后,您将无法按自己喜欢的方式处理数字Enter。执行此操作时,该数字将被截断为15位数字,并以指数形式显示。

这不是错误,而是功能。

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

为了使电子表格中的数字与您键入数字时完全相同,您必须将其存储为文本。因此,您必须在其前面加上撇号或将单元格格式化为文本,然后再在其中键入/复制值。如果它“有时不起作用”,那么,对不起,您执行了错误操作或具有某种自动更正功能(如果您使用撇号并且数字大于15位,则Excel会将其视为错误值,并使用警告标记单元格消息,因此此评论不是个人的或批评的)。

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

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


3

Excel 2010:这一次只能工作一列,而根本不能连续工作。选择列或列的子集,从“数据”选项卡中选择“文本到列”,然后右跳到“完成”。没有更多的科学计数法。

我同意许多Excel用户的观点,没有防止科学计数法的选择是犯罪行为!


1
在Excel 2007上的测试中,我必须单击Next >两次,然后选择“文本”,然后单击Finish。您可以通过转置,转换和转置将其应用于行。
斯科特,

1

在Excel 2013中,我也遇到了同样的事情,我只是转到“格式单元格->数字”,然后确保小数位设置为“ 0”。


1
类似于上面的匿名答案,但选择“数字”比选择“自定义”更有意义。此外,它在列表中的位置更高。无论如何,它做同样的事情,但是我更喜欢
Billynoah

0

选择所有单元格(或者为了使事情变得简单),选择整个电子表格,然后依次单击“设置单元格格式”和“ 文本”

您的整个电子表格将自动使用文本。您不必一个个地做。


las,这行不通。文字将采用科学计数法,这就是整个问题...
Joris Meys 2016年

0
  1. 将问题字段复制/粘贴到A列的新工作表中

  2. 将列A复制/粘贴到文本文件中

  3. 将B列格式化为文本并将文本文件粘贴到B列中

  4. 在C列中:

    =IF(ISNUMBER(SEARCH("+",B1)),A1,"")
    
  5. 将C列转换为不带小数的数字格式

  6. 将列C复制/粘贴到文本文件中

  7. 将D列格式化为文本并将文本文件粘贴到D列

  8. 在E栏中:

    =IF(IF(IF(B2=A2,A2,D2)=0,A2,IF(B2=A2,A2,D2))=0,"",IF(IF(B2=A2,A2,D2)=0,A2,IF(B2=A2,A2,D2)))
    
  9. 将列E复制/粘贴到记事本中

  10. 删除问题字段中的数据并将列格式设置为文本

  11. 将数据从文本文件复制/粘贴到问题字段


0

这在Excel 2013中对我有用,包括将单元格复制粘贴到其他程序中。过滤数据很有帮助,尤其是对于编辑步骤。

  1. 选择所需的单元格。
  2. 应用数字格式“文本”。(尝试按Alt,H,N,然后选择“文本”。)

然后,对于每个所需的单元格:

  1. 进入编辑模式。(尝试F2。)
  2. 使用Enter(适用于列)或Tab(适用于行)确认您的编辑。请勿更改内容。

您的电话号码将正常显示,即使是100位数字。=)


不适用于多个单元格(Excel 365)
Albin

0

Excel对于这样的CSV /批量数据工作感到沮丧。如果可能,请与LibreOffice一起使用,但不要这样做,也就是说,如果在Libreoffice中打开同一工作表(.xlsx),实际上是字符串的大“数字”不会以科学计数法显示(这是荒谬的决定)通过Excel)。LibreOffice的文件保真度非常高:再次在Excel中打开相同的.xlsx,科学记数法便像往常一样“起作用”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.