joinfunction不适用于水平范围?

我想要一个范围转换为一个string与自定义分隔符与联接function,而这工作的垂直范围,我还没有能够做一个水平的。 这对列/垂直范围有效:

Join(Application.Transpose(Workbooks("Book3").Sheets(1).Range("A1:A5").value), ";") 

现在,当我尝试与水平范围相同,我得到错误“无效的过程调用或参数”

 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