Транспонировать массив VBA

Из этого туториала Вы узнаете, как транспонировать массив с помощью VBA.

Транспонировать массив

Эта функция транспонирует двумерный массив:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Функция TransposeArray (MyArray как вариант) как вариантРазмер x до длины, y до длиныDim maxX как долго, minX как долгоDim maxY As Long, minY As LongDim tempArr как вариант'Получите верхнюю и нижнюю границыmaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Создать новый временный массивReDim tempArr (minX To maxX, minY To maxX)'Транспонировать массивДля x = minX To maxXДля y = minY To maxYtempArr (y, x) = MyArray (x, y)Следующий yДалее x'Выходной массивTransposeArray = tempArrКонечная функцияSub TestTransposeArray ()Dim testArr (от 1 до 3, от 1 до 2) в качестве вариантаDim outputArr как вариант'Назначить значения массиваtestArr (1, 1) = "Стив"testArr (1, 2) = "Джонсон"testArr (2, 1) = "Райан"testArr (2, 2) = "Джонсон"testArr (3, 1) = "Эндрю"testArr (3, 2) = "Скотт"'Вызов функции транспонированияoutputArr = TransposeArray (testArr)'Тестовый выходMsgBox outputArr (2, 1)Конец подписки

Чтобы проверить эту функцию, вызовите процедуру TestTransposeArray: здесь создается начальный массив testArr, а outputArr - это окончательный транспонированный массив.

WorksheetFunction.Transpose

Вместо этого вы можете перенести массив в Excel. Для этого вы можете использовать функцию Excel Transpose Worksheet.

Эта процедура перенесет 2D-массив в диапазон Excel с помощью функции Transpose Worksheet:

12345678910111213141516171819202122232425 Sub TestTransposeArray_Worksheetfx ()Dim maxX как долго, minX как долгоDim maxY As Long, minY As Long'Создать массив и присвоить значенияDim MyArray (от 1 до 3, от 1 до 2) как вариантMyArray (1, 1) = "Стив"MyArray (1, 2) = "Джонсон"MyArray (2, 1) = "Райан"MyArray (2, 2) = "Джонсон"MyArray (3, 1) = "Эндрю"MyArray (3, 2) = "Скотт"'Получите верхнюю и нижнюю границыmaxX = UBound (MyArray, 1)minX = LBound (MyArray, 1)maxY = UBound (MyArray, 2)minY = LBound (MyArray, 2)'Транспонировать массив в ExcelДиапазон ("a1"). Изменить размер (maxY - minY + 1, maxX - minX + 1). Value = _Application.WorksheetFunction.Transpose (MyArray)Конец подписки

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave