这就是让我发疯的原因(这是Excel 2010):
取一个长为1240800388917的数字,然后将其粘贴到新工作表中的单元格中。
Excel的默认单元格格式是常规的,因此该字符串以科学计数法表示为1.2408E + 12
右键单击该单元格,选择“设置单元格格式”,将格式设置为“文本”
即使该单元格已设置为文本,该单元格仍以科学计数法显示。
现在,如果我以不同的顺序执行这些步骤:
将空单元格设置为文本格式。右键单击该单元格,选择“设置单元格格式”,将格式设置为“文本”
,输入一个长数字,例如1240800388917,然后将其粘贴到文本格式的单元格中。
现在,该单元格显示为字符串,而不是科学计数法。
即使单元格被格式化为文本格式,结果仍然保留为科学计数法,这对我来说似乎很糟糕。我已经看到建议的解决方法,例如:使用CSV导入并将格式设置为文本,在每个数字字符串的开头添加一个空格字符,以及其他。
是否有一个简单的好的解决方法可以轻松地将这些字符串设置为文本格式?
Excel为什么要这样做?
我发现的相关SU问题:
如何使Excel 2007停止运行将大量数字格式化为科学计数法?和
是否期望此Excel行为具有较大的十六进制数?
#1 楼
嗯,数据的记忆从我在Excel中进行过大量数字交叉检查时就回过头来(再也没有)。当您将长数字字符串打入Excel中时,尝试说12345678901234567890(20位),Excel通常会为您转换,这意味着您刚刚输入的20位数字已被缩减为仅约15个有效数字。还请注意:转换是舍入,而不是四舍五入。 (12345678901234567890是1.23456789012346E + 19,但是excel会向您显示1.23456789012345E + 19)
这是在入口点发生的,因此一旦进入,任何其他详细信息都会丢失,因此即使您告诉Excel,您真正的意思是文本,而不是数字,这有点不走运,因此为什么您的第一个序列不起作用。
评论
是的,当我的数字字符串包含超过15个有效数字时,我会看到这种行为。如您所说,12345678901234567890变成1.23456789012345E + 19。当我单击该单元格时,编辑框将显示字符串被截断并用零填充的字符串,如12345678901234500000。奇怪的是,它对不超出excel 15位数字限制的数字也具有相同的作用。如果我粘贴12345678901234,它显示为1.23457E + 13,但是当我单击它时,编辑框仍显示原始字符串。现在,奇怪的是,如果我将此单元格格式化为文本,它仍然以科学计数法显示。烦死了
– Michael Levy
2012-04-17 14:39
那实际上是一个显示怪癖-将格式从常规设置为文本不会立即将其显示为原始字符串,但是如果您进入并编辑数据(例如,只需单击进入编辑区域并单击即可),它将完全按照您输入的内容进行更新。
– tanantish
2012年4月17日17:27
如果单击该单元格,则可以看到excel具有完整的数字,但是无论我是否将所有单元格都写为文本,它仍然希望使用科学计数法。太令人沮丧了!
–松饼人
13年6月26日在1:10
因此,您已回忆并重申了该问题。现在,您如何解决它?
–user3932000
18年11月25日在22:27
+1是因为它清楚地描述了数据截断问题。
– wanghq
20年1月17日在19:10
#2 楼
这在Excel 2010中对我有用。只需选择该列,右键单击,设置单元格格式,自定义,然后选择显示0的选项(“常规”下面的第二个选项)。评论
这比公认的回答“您有点不走运”好得多!我有一个存在此问题的CSV文件,并且自定义格式解决方案运行完美。
– davidair
15年4月17日在19:48
必须接受答案,有人应该/可以改变吗?
– qwertzman
15年7月9日在10:14
这似乎在我的测试中被截断了。使用Excel 2013,我在单元格12345678901234567890中输入了以下内容。当我按Enter键时,它显示为1.23457E + 19,并且基础值更改为12345678901234500000,因此会丢失数据。这不能回答原始问题。
– Michael Levy
2015年10月21日在22:31
一年后,我在这里重新访问了相同的答案,并希望我能再次投票赞成。
–billynoah
17年1月26日在6:05
此答案可修复格式,但不会保留输入的数据。这就是为什么我不能接受它作为正确答案。我发布了一个短片来展示。当您按照这些指示进行操作,然后输入一个长整数(如12345678901234567890)时,即使将其视为非科学符号显示,也将失去精度。 Excel将其视为值12345678901234500000。只有将其视为文本,您才能维护所有数字。见youtu.be/7EDcR7TQpYs
– Michael Levy
18-09-22在22:34
#3 楼
我发现在Office 2010中,如果先设置列的格式,然后粘贴数据,它将正确显示较大的数字。评论
那可能是因为它存储为字符串。如果将另一个单元格的内容乘以2,该怎么办?
– Peter Mortensen
2013年1月11日,12:15
这在Excel 2016 / Office 365中有效。我选择了所有单元格,将它们格式化为“文本”,然后粘贴我复制的数据,但并没有显示出令人讨厌的科学符号。谢谢!
– frezq
17年6月12日在8:18
这在Google表格中也对我有用...在粘贴val之前,“格式>数字> 0”,并且没有转换为科学计数法,同时也不会丢失最终值(舍入为val),这种情况经常发生。
– twknab
19-09-30在18:48
#4 楼
数字前的单撇号'将迫使Excel将数字视为文本(包括默认的左对齐)。并且如果您标记了错误,它将以数字形式显示为错误存储在单元格上。评论
这并非总是如此。 Excel有时甚至用引号引起来也破坏了我的数据。
–塞林
2015年5月11日20:50
塞林(Cerin),一点也不曾低估Excel(或Microsoft)做完全无法解释或可重复的事情的能力。但是,撇号技巧通常按广告中的说明工作。
–dav
2015年5月11日23:07
您可以批量执行此操作吗?我有60000个单元格要转换为文本的数据。
–vaibhavcool20
18年4月8日在15:44
或者,只需在右键单击“设置单元格”菜单中选择设置为文本格式;)
–沙燕
19年5月8日14:08
#5 楼
试试这个...这对我来说是Excel 2013的作品。=""&a1
其中a1保存数值。
之后,复制列并将其粘贴到原始位置专栏。
评论
这也适用于Excel 2010。
– Paul G
13年7月10日在14:12
作为副节点:=“ 1240800388917”进行相同的操作
– nixda
13年7月25日在20:41
#6 楼
我知道这个问题的年龄,但是这是我在Google搜索之后找到的那个问题,并且没有回答我的问题(为什么格式化为文本不起作用以及为什么数字在格式化后会减少到15位输入文字)。简单的答案是:输入数字值并点击
Enter
后,您将无法按自己喜欢的方式处理数字。一旦执行此操作,该数字将被截断为15位数字并以指数形式显示。这不是错误,它是一个功能。
此后所做的所有操作都将使用截断后的值,因此
但是,您可以使用
Text to columns
选项将指数表示法转换为文本(单击列标题,单击Text to data
,然后单击Delimited
,Next
,取消选中所有定界符框,在Text
中选择Column data format
,然后选择Finish
),将值转换为文本并立即显示为15位数字。但是,它只有15位数字,因此,如果您使用的数字更长,则会丢失其余部分。要使电子表格中的数字与您键入数字时完全相同,必须将其存储为文本。因此,您有两种方法可以执行此操作,但是它们仅在编辑之前/期间有效:
在键入/复制值之前,需要在其前加上撇号或将单元格格式设置为文本,
您必须在输入之前将目标列的格式设置为
Text
。如果您使用的是方法1,并且“有时不” t工作”,那么抱歉,您做错了什么,或者您进行了某种自动更正(如果您使用撇号并且数字大于15位,则Excel会将其视为错误值并用警告消息标记单元格,因此此备注是
方法2非常有用,因为它适用于复制和粘贴,甚至适用于大型数据集。
批量处理的另一种方法是从文本文件导入值。我敢说这是大多数情况下的唯一方法。并确保导入文件,而不只是打开文件,因为Excel对待
csv
类型的方式就像它的本机格式一样,并且理所当然地将大数位修剪为15位。现在,最后一个问题。如果您在Excel单元格中输入大数值,格式为文本,只要该单元格不够宽,它仍将以科学计数法显示。这很烦人,但是有些Excel内部算法的副作用。只需扩大单元格的范围,您就会每次看到完整的价值。
评论
旁注:“列中的文本”位于“数据”下的功能区菜单中。
–́Culip
20年1月30日在16:17
考虑到这种行为令人发疯,并且对人类没有意义,我会说这是一个错误。我从不希望将长整数转换为电子符号。
– pbreitenbach
20-2-27在23:05
#7 楼
您可以将单元格设置为“自定义”格式>#将数据粘贴到列中后即可应用,但必须先执行此操作,然后再保存电子表格。
我工作许多带有条形码(UPC)的条形码,默认情况下excel会将其格式化为科学计数法。让我疯狂!为什么这不是我永远不会知道的选择。
评论
但是,这不会将数字转换为文本,这可能会在以后引起问题。但是...
– Joris Meys
16年1月11日,9:44
#8 楼
Excel 2010:一次只能工作一列,而不能连续工作。选择列或列的子集,从“数据”选项卡中选择“文本到列”,然后右跳到“完成”。再也没有科学记数法了。我同意许多Excel用户的看法,没有防止科学记数法的选择是犯罪行为!
评论
在Excel 2007上的测试中,我必须单击下一步两次,然后选择``文本''并单击完成。您可以通过转置,转换和转置将其应用于行。
–斯科特
13年8月14日在23:59
#9 楼
在Excel 2013中,我也遇到了同样的事情,我只是转到“格式单元格->数字”,然后确保将小数位设置为“ 0”。评论
类似于上面的匿名答案,但是选择“数字”比选择“自定义”更有意义。此外,它在列表中的位置更高。无论如何,它做同样的事情,但我更喜欢这个
–billynoah
16年2月9日,下午1:55
#10 楼
Excel对于这样的CSV /批量数据工作感到沮丧。如果可能,请与LibreOffice一起使用,但不要这样做,也就是说,如果在Libreoffice中打开同一工作表(.xlsx),实际上是字符串的大“数字”不会以科学计数法显示(这是荒谬的决定)通过Excel)。 LibreOffice的文件保真度很棒:再次在Excel中打开相同的.xlsx,科学记数法便像往常一样“起作用”。#11 楼
选择所有单元格-或者,为了使事情变得简单-选择整个电子表格,然后依次单击“设置单元格格式”和“文本”。自动,您的整个电子表格将使用文本。您不必一个个地做。
评论
las,这行不通。文字将采用科学计数法,这就是整个问题...
– Joris Meys
16年1月11日,9:44
#12 楼
将问题字段复制/粘贴到A列的新工作表中
将A列复制/粘贴到文本文件中
将B列格式化为文本并将文本文件粘贴到B列中
在C列中:
=IF(ISNUMBER(SEARCH("+",B1)),A1,"")
将C列转换为没有小数的数字格式
将C列复制/粘贴到文本文件中
格式化列D插入文本并将文本文件粘贴到D列中
在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)))
将E列复制/粘贴到记事本中
删除问题字段中的数据并将列格式设置为文本
将数据从文本文件复制/粘贴到问题字段中
#13 楼
这在Excel 2013中对我有用,包括将单元格复制粘贴到其他程序中。筛选数据非常有帮助,特别是对于编辑步骤。选择所需的单元格。
应用数字格式“文本”。 (尝试按Alt,H,N,然后选择“文本”。)然后,对于每个所需的单元格:
进入编辑模式。 (尝试F2。)
使用Enter(适用于列)或Tab(适用于行)确认您的编辑。请勿更改内容。
您的号码将正常显示,即使是100位数字。 =)
评论
不适用于多个单元格(Excel 365)
– Albin
19年4月27日在8:58
#14 楼
如其他文章所述,Excel会用科学记数法覆盖您粘贴的数据,因此无论您将格式更改为什么,都无法返回。处理此问题的方法是,我总是首先粘贴所有将数据导入excel,并注意所有具有科学计数法的列。然后撤消粘贴,突出显示我之前记下的所有列(按住Ctrl单击)并将格式更改为文本。之后,我重新粘贴,所有科学符号都消失了。
评论
长号1240800388917是从另一个单元格复制的吗?还是纯文本(如记事本中的文本)?