将现有的Excel值中的前导零/ 0添加到一定长度


299

关于如何防止在导入Excel或从Excel导出时前导零被剥离的问题,SO上有很多很多问题和高质量的答案。但是,我已经有一个电子表格,其中包含的值实际上应该以字符串形式处理,但这些值被截断为数字。我需要清理数据并重新添加前导零。

有一个字段应该是四个字符,前导零将字符串填充为四个字符。然而:

"23" should be "0023", 
"245" should be "0245", and
"3829" should remain "3829"

问题:是否有一个Excel公式将这些0填充到这些值上,以便它们全部为四个字符?

注意:这与古老的邮递区号问题类似,在新英格兰地区,邮递区号的前导零掉落,您必须重新添加。


这个时期应该存在"3829."吗?
Josh Lee 2010年

不,但这是“”的正确位置。根据我可信赖的Strunk&White副本在句子中使用字符。为了清楚起见,将其删除。
标记A

7
我会接受这一点,除了它在一个代码块中,在该代码块中,我倾向于从字面上看。(此外,Excel将每个数字都存储为浮点数,因此该数字可能是小数点。)
Josh Lee,2010年

4
@josh upvote正确拼写为“接受那除外”。
Michiel van der Blonk

Answers:


506
=TEXT(A1,"0000")

但是,TEXT函数还可以执行其他一些花哨的工作,例如日期格式化。


4
我的天啊!完善!您每天都会学到新东西。我什至拥有多本备受推崇的Excel书籍,但从未遇到过-将来在我重新处理基于Excel的邮政编码数据时都可以使用。
标记A

1
这对十进制数很好用...但是十六进制呢?我找不到一种使前导0起作用的方法...
Shadow

10
@shadow Excel的十六进制数字是字符串,而不是数字。因此,将其作为字符串处理:=RIGHT("0000" + A1, 4)
Gserg 2012年

8
@ shadow,DEC2HEX采用places参数。因此=DEC2HEX(HEX2DEC(A1),4)很好地填充十六进制数字。
拉兹·威尔逊

9
@mcs他们没有更改语法。您的Excel版本恰好;用作参数分隔符,它是从Windows语言设置中获取的。
Gserg

78

这样做的更有效(不太麻烦)的方法是通过自定义格式。

  1. 突出显示要设置样式的列/数组。
  2. 单击ctrl+ 1或设置格式->设置单元格格式。
  3. 在数字选项卡中,选择自定义。
  4. 将自定义格式设置为000#。(零零零#)

请注意,这实际上并不会更改单元格的值。它仅在工作表中显示前导零。


8
如果不需要保留经过原始单元格的前导零,则此方法非常有用,但是如果需要在其他任何地方使用字符串,则将不起作用。这会使单元格显示为0004、01032、0284,但是如果您尝试将字符串组合到单独的单元格中,则会显示例如4-1032-284,而不是所需的0004-01032-0284
Ashton Sheets

@AshtonSheets是的,正如我在答案中指出的那样,它仅显示前导零,它对实际值没有任何作用。但是,在某些情况下,我使用它而不是=text()因为它的方便性和所涉及的公式不足。
摩西

7
供参考,实际上应该是0000,而不是000#。否则,它不为0的工作
PearsonArtPhoto

2
对于上述问题,答案是将#(哈希)换为0(零)。没有值时,#不会给您字符;没有值时,0会给您零!有意义且效果出色:$ 0.0,“ M”
Andrew

1
使用000#也对我不起作用,但是当我仅将自定义格式指定为四位数字为0000,五为00000,六为000000等时有效。显然,这仅对较短的格式数字有用
Hilary 2016年

16

当我意识到该DEC2HEX()功能免费提供该功能时,我点击此页面尝试填充十六进制值。

您只需要添加第二个参数。例如,绑12变成0C
DEC2HEX(12,2)=> 0C
DEC2HEX(12,4)=> 000C
...,依此类推


9

我不确定这在Excel 2013中是否是新功能,但是如果右键单击该列并说“特殊”,则实际上是ZIP代码和ZIP + 4的预定义选项。Magic。

在此处输入图片说明


6
很棒的建议和更新。需要给Microsoft -1鼓励任何人将SSN存储在电子表格中。
Mark A

8

我知道这是在不久前回答的,但是这里没有提到我很惊讶的简单解决方案。

=RIGHT("0000" & A1, 4)

每当我需要填充时,我都会使用上面的内容。我个人认为它是最简单的解决方案,更易于阅读。


1

如果您使用自定义格式,并且需要将这些值连接到其他位置,则可以将它们复制,然后将选择性粘贴->值粘贴到工作表(或其他工作表)的其他位置,然后将这些值连接起来。


1

即使这将很好地工作

REPT(0,2-LEN(F2)&F2

其中2是总位数,对于0〜9->将显示00至09,其余将不添加任何内容。

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.