我找到了这段代码:
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
它将范围合并到一个单元格中(CONCATENATES
单元格,并在每个部分之间添加一个空格)。我多次尝试编辑它以添加&#34;,#34;而是在每个项目之间。问题是它引用了范围A1:A1000
,我可能只使用10行或全部。我只是不希望它在我没有填充的每个单元格的组合结束时有额外的,,,,,,
还要创建副本,在每个项目的右侧添加; 。
如何编辑它以向左或向右添加这些部分,但仅用于填充的单元格。
感谢您的帮助。
答案 0 :(得分:1)
你的宏已经有效了。 =ConcatenateRange(A1:A14,",")
A1
至A4
的数字为1,2,3,4
,{{1}}。
答案 1 :(得分:1)
如果使用空格连接单个列,则可以将代码缩短为单行
要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), ":")
答案 2 :(得分:1)
我刚才写了一个函数,它有点灵活,如果需要可以修剪空格等等。也许这会帮助其他有类似问题的人。
ifdef