我正在尝试将不同列中的数字合并/连接成一个长数字。由于单元格应用了自定义格式,一些数字的前导零被删除。当我将它们连接在一起时,零被删除。有人知道公式应该是什么样子,这样前导零就不会被删除吗?
例如:
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)
这只是对该代码的快速尝试,因此请注意该函数的两个要求:
- 它仅以连续的范围作为参数。
- 它按照从左到右(从上到下)的顺序连接值。
可以调整代码以消除这些限制,但是对于您想要的来说,这听起来可以很好地工作。