Функция объединения не работает для горизонтальных диапазонов?

Я хочу преобразовать диапазон в строку с пользовательским разделителем с функцией Join, в то время как это работало в вертикальном диапазоне, я не смог сделать это для горизонтального. Это то, что работало для столбца / вертикального диапазона:

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 
  • Делимит текст с отформатированным форматированием
  • Опция выпадающего списка соты зависит от строки разделителя ячейки
  • У меня есть большой файл CSV, который имеет информацию в одном столбце. Как я могу реплицировать задачу «text to columns» в excel с помощью python?
  • Разделение столбцов очень конкретно
  • excel vba макросчитывание текстовых файлов, одна строка в отдельной ячейке
  • Как настроить код для динамического разграничения несколько раз?
  • Файл с разделителями Excel
  • Несколько запятых в файле csv с разделителем = ','?
  • Давайте будем гением компьютера.