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

时间:2019-04-24 21:24:22

标签: excel vba excel-formula

我使用=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?

2 个答案:

答案 0 :(得分:0)

如果只是视觉效果,您可以将单元格格式更改为自定义00000000。

答案 1 :(得分:0)

类似于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位数字。