Excel VBA函数将非空单元与用户定义的分隔符连接起来

我发现这个代码:

Function ConcatenateRange(ByVal cell_range As Range, _ Optional ByVal seperator As String) As String Dim cell As Range Dim newString As String Dim cellArray As Variant Dim i As Long, j As Long cellArray = cell_range.Value For i = 1 To UBound(cellArray, 1) For j = 1 To UBound(cellArray, 2) If Len(cellArray(i, j)) <> 0 Then newString = newString & (seperator & cellArray(i, j)) End If Next Next If Len(newString) <> 0 Then newString = Right$(newString, (Len(newString) - Len(seperator))) End If ConcatenateRange = newString End Function 

它将一个范围合并到一个单元格(连接单元格并在每个部分之间添加一个空格)。 我已经多次尝试编辑它来在每个项目之间添加“,”。 问题在于它引用范围A1:A1000 ,在那里我只能使用10行或全部。 我只是不希望它有额外的,,,,,,在每个单元格,我没有填充结合的结束。

还想创build这个重复的地方,它会添加一个; 在每个项目的右侧。

我如何编辑这个添加这些部分,无论是向左或向右,但只为填充单元格。

感谢您的任何帮助。

你的macros已经起作用了。 =ConcatenateRange(A1:A14,",")其中A1A4有数字1-4,你会得到1,2,3,4

如果您将单个列与空格连接,则可以将代码缩短为一行

对于A1:A1000 ,

 x = Join(Filter(Application.Transpose(Application.Evaluate("=IF(Len(A1:A1000)>0,A1:a1000,""x"")")), "x", False), ",") 

对于A1:A1000要与:

 x = Join(Filter(Application.Transpose(Application.Evaluate("=IF(Len(A1:A1000)>0,A1:a1000,""x"")")), "x", False), ":")