连接功能不适用于水平范围?

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