连接具有前导零的数字

连接具有前导零的数字

我正在尝试将不同列中的数字合并/连接成一个长数字。由于单元格应用了自定义格式,一些数字的前导零被删除。当我将它们连接在一起时,零被删除。有人知道公式应该是什么样子,这样前导零就不会被删除吗?

例如:
A1 = 08,
B1 = 7,
C1 = 0,
D1 = 17,
E1 = 00,
F1 = 01,
G1 = 从 A1 到 F1 的集中数

结果数字应该是0870170001但是出现以下数字8701701

我正在使用 Excel 2010,这是我尝试过的公式:=CONCATENATE(A1;B1;C1;D1;E1;F1)

答案1

可能不需要;而是使用逗号来显示每个单独的字符串值(这可能取决于本地化设置 - 感谢鲍勃)。

=CONCATENATE(A1,B1,C1,D1,E1,F1)

但是,您需要确保将包含数字的单元格格式化为文本,方法是突出显示行,然后在主页功能区中的“数字”选项卡下的下拉列表中选择“文本”。

在此处输入图片描述

答案2

我从您的评论中看到,您的单元格很可能具有自定义格式,并且这些单元格中显示的值可能与输入的值不同(例如,“8”显示为“08”)。在这种情况下,您可以将函数中包装的每个值TEXT与单元格的指定格式连接起来。例如,如果A1具有自定义格式“00”,则您可以在连接公式中将其用作TEXT(A1,"00")术语A1。对于完整的公式,您可能会得到如下内容:

=TEXT(A1,"00")&TEXT(B1,"@")&TEXT(C1,"0")&...

当然,这很繁琐,因为它需要您手动重新创建每个单元格的格式。如果您要大量使用多种格式,我认为这是使用 VBA 函数完成繁重工作的绝佳机会。您可以将以下代码粘贴到 VBA 编辑器中的模块中(按Alt+打开F11)。

Public Function CONCATwFORMATS(rng1 As Range) As String
Dim tmpstr As String, tmpFormat As String
Dim c As Range

For Each c In rng1
    tmpFormat = c.NumberFormat
    If tmpFormat = "General" Then
        tmpstr = tmpstr & c.Value
    Else
        tmpstr = tmpstr & Format(c.Value, tmpFormat)
    End If
Next c
CONCATwFORMATS = tmpstr
End Function

然后,您可以在中使用以下公式G1

=CONCATwFORMATS(A1:F1)

这只是对该代码的快速尝试,因此请注意该函数的两个要求:

  1. 它仅以连续的范围作为参数。
  2. 它按照从左到右(从上到下)的顺序连接值。

可以调整代码以消除这些限制,但是对于您想要的来说,这听起来可以很好地工作。

相关内容