Транспонирование из диапазона в конец данных - PullRequest
2 голосов
/ 03 февраля 2020

У меня есть этот код, который должен транспонировать данные. Проблема в том, что я не знаю, как сделать это динамически c, поэтому он может переносить больше, чем до колонки «О». Но если есть 300 строк данных, он должен иметь возможность транспонировать эти данные по столбцам.

Sub TransposeData()
    Range("A2:O15").Value = WorksheetFunction.Transpose(Range("A2:O8"))
End Sub

У меня есть только набор тестовых данных, но когда я добавляю более 15 строк данных, он не может перенести их за пределы столбца «O».

Набор данных

enter image description here

После транспонирования

enter image description here

Ответы [ 2 ]

3 голосов
/ 03 февраля 2020

Попробуйте

Range("A2:O15").Value = Application.Transpose(Range("A2:O8"))

Однако это не сработает, поскольку диапазон назначения отличается от исходного размера. Лучше присвойте массиву Value из A2: O15, а затем

Range("A2").Resize(Ubound(Arr,2), Ubound(Arr)).Value = Application.Transpose(Arr)

Вы можете сделать динамический A2: O15 c с таким кодом.

Dim Rng As Range
Dim Arr as Variant

Set Rng = Range(Cells(2, "A"), Cells(Rows.Count, "A").End(XlUp).Offset(0,15))
Arr = Rng.Value
2 голосов
/ 03 февраля 2020

Вы можете сделать это более динамично:

Sub TransposeMe()
    Dim myRange As Range
    Set myRange = Range("A2:O15")
    Dim destRange As Range
    Set destRange = Range("A2")
    Set destRange = destRange.Resize(myRange.Columns.Count, myRange.Rows.Count)
    destRange.Value = Excel.Application.Transpose(myRange)
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...