Попробуйте этот код, пожалуйста.
Он скопирует выбранный диапазон и транспонирует его в набросок 2 второго листа:
Sub testCopyTransposedRanges()
Dim sh2 As Worksheet, inpRng As Range, lastCol As Long, arrTr As Variant
Set inpRng = Application.InputBox("Select range to be copied and transposed:", _
"Range Selection", Selection.Address, Type:=8)
If inpRng Is Nothing Then Exit Sub
arrTr = inpRng.value
If IsEmpty(arrTr) Then Exit Sub
Set sh2 = Worksheets("worksheet2") ' use here your sheet name!!!
lastCol = sh2.Cells(2, Cells.Columns.Count).End(xlToLeft).Column + 1
sh2.Cells(2, lastCol).Resize(, UBound(arrTr)).value = WorksheetFunction.Transpose(arrTr)
End Sub
Он должен быть «отфильтрован» для «Отмена» ', выбор из нескольких столбцов et c. Но это будет сделано только в том случае, если такое решение соответствует вашим потребностям. В противном случае вы должны представить логи c, основанные на том, что нужно создать алгоритм для автоматического выбора необходимых диапазонов.