繁体   English   中英

Excel:如果数字少于8位,如何将前导零添加到用逗号分隔的数字字符串中?

[英]Excel: How to add leading zero to string of numbers separated by comma, if the number is less than 8 digits?

我使用=IF(A2=A1,C1&","&B2,B2)将跨越多行的关联SKU字符串连接到一个单元格中。 问题是某些SKU以0开头,并且已用公式将其删除。 (另外,有些行显示为带有红色文本和填充的错误单元格。错误消息说它们是一个数字,以文本形式存储。但是并不是每个行都这样,我也不知道为什么。 )

所有SKU都有8位数字,因此不正确的SKU将有7位数字。 例如:

看起来像:4286000,4286800,4310001,4310801,14872001,14872801,14877001,14877801

应为:04286000,04286800,04310001,04310801,14872001,14872801,14877001,14877801

我尝试了=TEXT函数,但得到了一个有趣的(错误的)结果。 例如,在所有六个SKU都需要前导零的字符串中,我在函数的format_text部分中添加了48个零,每8个零后都添加了逗号。 它将逗号放在每三位数中,基本上输出为一个大数字。

这是可以使用公式解决的问题,还是需要VBA?

您可以将单元格格式更改为自定义的00000000(如果这是视觉操作)。

与Tigeravatar的注释类似,该注释将返回字符串而不是数字,但前导零:

=RIGHT("00000000"&B2,8)

or

=RIGHT("00000000"&MAX(len(B2),8))

基本上,它在前面添加8个零,然后接受最后8个字符。 或者,在第二个公式的情况下,它将至少占用8个字符,并且最多占用单元格中已有内容的长度。 如果您知道至少有7个字符,则可以只添加1个零。

或者,您可以使用REPT函数添加零:

=REPT("0",MAX(8-LEN(B2),0))&B2

如果您有一个更长的数字,则最大值是最大的,该数字最终会为REPT提供负值。 在这种情况下,MAX将返回0而不是避免REPT错误。 此公式的结果也是一个字符串。

如果要看到前导零,但将单元格值保留为数字,则需要对单元格应用自定义格式。 只需记住,即使沿该路线走,零点实际上并不存在,但该单元格只是显示8位数长的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM