我正在尝试将列中的一系列输入单元连接到单独工作表中的一个输出单元。对不同的细胞以不同的范围重复这一过程。例如范围(A1:5) - >细胞(B1);范围(A6:10) - >细胞(B2); ...等等。输出工作表也需要严格控制,因此我不希望对其进行任何调整。
我目前在输出单元格中使用了连接公式,但是当连接范围内的单元格为空(函数中的分隔符为“,”)时,我觉得它很麻烦。作为示例,由于空单元,输出单元有可能变为“,x,y ,,,, z”等。因此,我需要将一个条件语句合并到宏中以忽略空单元格,并将其余部分与分隔符“,”连接起来。
所需输出的示例是:“x,y,z”。的纯
作为一名业余爱好者并且已经四处寻找,我所能找到的就是执行此操作的功能(因此没有初始代码)。我更喜欢“按钮”对象,以便用户可以以受控方式完成该过程。
任何帮助都将不胜感激。
此致
答案 0 :(得分:4)
考虑这个 UDF
Public Function concat(rng As Range, sep As String) As String
For Each r In rng
If concat = "" Then
concat = r.Value
Else
concat = concat & sep & r.Value
End If
Next
'
End Function
用户定义函数(UDF)非常易于安装和使用:
如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
删除UDF:
从Excel使用UDF:
= CONCAT(A1:Z1, “”)
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
有关UDF的详细信息,请参阅:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
必须启用宏才能使其生效!
要求排除空白并使用逗号作为分隔符,这将是合理的 UDF
Public Function Konkat(rin As Range) As String
For Each r In rin
v = r.Value
If v <> "" Then
Konkat = Konkat & "," & v
End If
Next r
Konkat = Right(Konkat, Len(Konkat) - 1)
End Function
修改#1:强>
如果所有输入单元格可能为空,则使用此版本:
Public Function Konkat(rin As Range) As String
For Each r In rin
v = r.Value
If v <> "" Then
Konkat = Konkat & "," & v
End If
Next
If Konkat = "" Then Exit Function
Konkat = Right(Konkat, Len(Konkat) - 1)
End Function