2015-01-07 20:44:09 +0000 2015-01-07 20:44:09 +0000
22
22

如何阻止Excel自动将数值0503E000转换为5.03E+02?

Excel在CSV中任何单元格中自动将数值0503E000转换为5.03E+02,我试着将其转换为文本数字和一般数值,但在我保存并重新打开后,它又回到了5.03E+02

我该如何阻止这种情况发生?

答案 (7)

27
27
27
2015-01-08 05:58:13 +0000

如果您可以转换或控制CSV格式,您可以通过用双引号包裹一列,并在前面加上等号,迫使它在Excel中解析为文本。

Excel会粗心地丢弃这种格式下的精度。

Value,0503E000,1234123412341234

甚至这种格式。

Value,"0503E000","1234123412341234"

转换为:

Value | 5.03E+02 | 1234123412341230

_然而,加上等号会迫使Excel勉强保存你的数据。

Value,="0503E000",="1234123412341234"

…打开后是:

Value | 0503E000 | 1234123412341234
16
16
16
2015-01-07 21:21:02 +0000

我认为这里的关键问题是你使用的是CSV,它没有嵌入单元格类型。Excel会自动尝试将单元格解释为科学数字,这就是为什么你看到的是5.03E+02而不是0503E000

尝试创建一个Excel工作簿,将所有单元格格式化为文本,然后粘贴数据。我在Excel 2013中试了一下,成功了。

9
9
9
2015-01-08 02:35:42 +0000

与其在Excel中 “打开** ing "CSV文件,不如选择导入文件(在Excel 2007-2010中,你会导航到数据功能区/获取外部数据/从文本)。不确定2013年的情况,但应该有类似的东西。当您这样做时,文本导入向导将打开,并为您提供机会将包含该值的列格式化为文本,然后Excel(不是那么有用)将其改为数字值。

2
2
2
2015-01-08 07:16:27 +0000

在单元格中以撇号开头,强制解释文本。

'0502E000

基本上,这告诉Excel不要把字段解析为数字。因为字段中有一个 “E",所以在Excel看来它就像一个数字。撇号实际上不会被输入到单元格中。

[a1] '0502E000
[b1] =hex2dec(a1)

单元格 "b1 "将显示84074496。

0
0
0
2019-07-26 20:41:40 +0000

将数据粘贴到一个谷歌电子表格中。选择列==>格式==>数字==>自定义格式==>键入你想要的格式发生的数字(例如:10位数=00000000)。

0
0
0
2019-02-27 15:40:33 +0000

尝试通过MS excel中的DATA选项加载文件(从DB表中获取的数据),然后在加载时只需在 “数据类型检测 "下选择 "不检测数据类型",然后加载,这将保持数据的格式和加载excel,不需要任何列的转换。

-1
-1
-1
2017-02-07 18:34:08 +0000

在默认的单元格格式下,前面带0的数字和长数字会被Excel自动修改。例如,如果你输入012,它将被改为12。

如果您将单元格格式化为文本,那么您在单元格中输入的任何数字都将保持原样,不会被Excel修改。

然而,如果你将一个来自其他来源的数字粘贴到一个格式为Text的单元格中,并且在来源中存在任何形式的格式化,单元格的格式化将从Text变为General,并且数字操作将回来。

我找到的解决方法是进行特殊的粘贴,将数字粘贴为文本。然后单元格仍然保持其文本的格式,数字完全没有修改。