为什么将格式化为数字的Excel列格式化为文本时会丢失其前导零?


8

我必须将电子表格导出为CSV。列之一是东海岸邮政编码的邮政编码,前导零。当我将该列重新格式化为Text希望保留导出的前导零时,该列立即从右对齐变为左对齐,并且前导零消失了!我希望恰恰相反,如果从文本重新格式化为数字,它可能会丢失零。

如何保留前导零?

Answers:


6

理论

对于单元格中的数据,Excel有两种不同的不相关的概念:原始/存储值显示值

“原始”值或存储的值是以无格式表示的实际数据。原始数据的类型可以是数字,文本,日期等。

“显示”值是数据的格式。使用Excel GUI时,您会看到显示值,而不是原始值。

问题是,当您导出为CSV时,它将获取原始值并导出它,而不是显示值!因此,即使您使用“格式单元格”对话框将数据格式化为包含前导零,如果基础值不包含前导零,那么导出也不会。

您需要将所有数据格式化为文本格式(在Excel电子表格中),然后在适当时添加前导零。这将消除显示值,使您无法相信原始值中的前导零(您没有)。

零不作为单元格内容的一部分而存在,仅存在于格式设置中,因此当您格式化为文本格式时,不会得到它。您可以尝试在下一列中使用公式,例如,如果您在A2中输入5位(?)邮政编码,则将该公式放到B2中

=TEXT(A2,"00000")

将公式复制到列中

其结果是一个文本值(可能带有实际的前导零)。在另一列中拥有此值之后,您可以复制并在原始列上执行“粘贴值”,以将所有基础数​​据替换为零填充的数据。然后删除多余的列。


嗨,巴里(Barry),出色的回答,我添加了一些背景知识“理论”,而不是发布另一个答案...随时根据需要进行编辑,这是一个协作式回答:-)
allquixotic 2012年

@allquixotic,没问题,很好的补充
巴里霍迪尼

2

您在单元格中有数字,而不是文本。数值02010与数字2010相同。将其格式化为文本将给出2010的常规文本表示形式,而不是02010。

要保留前导零,请以字符串形式而不是数字形式输入数据。例如,输入=“ 02010”作为值。

要简单地显示前导零,并假设所有数字的长度相同(例如,五位数字),请使用“自定义”格式。从“自定义FOrlist”中选择0,然后将其更改为00000。所有数字将显示为五位数字,带有前导零。但是,如果将此数据保存到CSV文件,则前导零将不存在。保留它们的唯一方法是将数据作为字符串输入。


我们从各种各样的第三方那里获得这些数据。看起来我们很走运,因为我们受到输入数据的人员的摆布,无法强迫他们以聪明的方式做。我很惊讶地将其转换为文本,去除了零。IMO是一个副作用,而不只是显示值的字符串表示形式,而我希望一个单元格被格式化为数字以去除前导零。
mrblint 2012年

0

自从我使用Excel以来已经有很长时间了,但是我总是使用前缀'作为前缀,并且Excel会将其视为字符串,而不是尝试将其解释为数字。

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.