连接功能不适用于水平范围?
Join function not working for horizontal ranges?
我想使用 Join 函数将范围转换为带有自定义分隔符的字符串,虽然这适用于垂直范围,但我无法对水平范围执行此操作。这适用于 column/vertical 范围:
Join(Application.Transpose(Workbooks("Book3").Sheets(1).Range("A1:A5").value), ";")
现在,当我尝试对水平范围进行相同操作时,出现错误 "Invalid procedure call or argument"
Join(Application.Transpose(Workbooks("Book3").Sheets(1).Range("A1:D1").value), ";")
Join(Workbooks("Book3").Sheets(1).Range("A1:D1").value, ";")
如何做到这一点?
Join(Application.Transpose(Application.Transpose( _
Workbooks("Book3").Sheets(1).Range("A1:D1").value)), ";")
只要您不运行限制可以转置的单元格数量,您可以尝试这样的功能:
Function JoinRange(rg As Range, Optional Delim As String = " ")
Dim V As Variant
V = rg
If UBound(V, 1) = 1 Then 'One Row
JoinRange = Join(WorksheetFunction.Index(V, 1, 0), Delim)
Else
JoinRange = Join(WorksheetFunction.Transpose(V), Delim)
End If
End Function
我想使用 Join 函数将范围转换为带有自定义分隔符的字符串,虽然这适用于垂直范围,但我无法对水平范围执行此操作。这适用于 column/vertical 范围:
Join(Application.Transpose(Workbooks("Book3").Sheets(1).Range("A1:A5").value), ";")
现在,当我尝试对水平范围进行相同操作时,出现错误 "Invalid procedure call or argument"
Join(Application.Transpose(Workbooks("Book3").Sheets(1).Range("A1:D1").value), ";")
Join(Workbooks("Book3").Sheets(1).Range("A1:D1").value, ";")
如何做到这一点?
Join(Application.Transpose(Application.Transpose( _
Workbooks("Book3").Sheets(1).Range("A1:D1").value)), ";")
只要您不运行限制可以转置的单元格数量,您可以尝试这样的功能:
Function JoinRange(rg As Range, Optional Delim As String = " ")
Dim V As Variant
V = rg
If UBound(V, 1) = 1 Then 'One Row
JoinRange = Join(WorksheetFunction.Index(V, 1, 0), Delim)
Else
JoinRange = Join(WorksheetFunction.Transpose(V), Delim)
End If
End Function