Цей підручник навчить вас транспонувати масив за допомогою VBA.
Транспонувати масив
Ця функція транспонуватиме двовимірний масив:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | Функція TransposeArray (MyArray As Variant) як VariantDim x As Long, y As LongDim 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 до maxX, від minY до maxX)'Перенесіть масивДля x = minX До maxXДля y = minY До maxYtempArr (y, x) = MyArray (x, y)Далі yДалі x'Вихідний масивTransposeArray = tempArrФункція завершенняSub TestTransposeArray ()Затемнити тестArr (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)End Sub |
Щоб перевірити цю функцію, викликайте процедуру TestTransposeArray: тут створюється початковий масив testArr, а outputArr - остаточний транспонований масив.
Робочий лист Функція. Транспонування
Замість цього, можливо, вам захочеться транспонувати масив у Excel. Для цього можна скористатися функцією Excel Transpose Worksheet.
Ця процедура перенесе 2D -масив в діапазон Excel за допомогою функції Transpose Worksheet:
12345678910111213141516171819202122232425 | ПідтестTransposeArray_Worksheetfx ()Dim maxX як довго, minX як довгоDim maxY As Long, minY As Long'Створення масиву та призначення значеньЗатемнити 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). Значення = _Application.WorksheetFunction.Transpose (MyArray)End Sub |