VBA Транспониращ масив

Този урок ще ви научи как да транспонирате масив с помощта на VBA.

Транспониране на масив

Тази функция ще транспонира двуизмерен масив:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 Функция TransposeArray (MyArray като вариант) като вариантDim x As Long, y As LongDim maxX As Long, minX As LongDim 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 До maxXЗа y = minY До maxYtempArr (y, x) = MyArray (x, y)Следващ yСледващ x'Изходен масивTransposeArray = tempArrКрайна функцияSub TestTransposeArray ()Dim testArr (1 To 3, 1 To 2) As VariantDim outputArr като вариант„Присвояване на стойности на масивиtestArr (1, 1) = "Стив"testArr (1, 2) = "Джонсън"testArr (2, 1) = "Райън"testArr (2, 2) = "Джонсън"testArr (3, 1) = "Андрей"testArr (3, 2) = "Скот"„Функция за транспониране на повикванеoutputArr = TransposeArray (testArr)'Тестов изходMsgBox изход Arr (2, 1)End Sub

За да тествате тази функция, извикайте процедурата TestTransposeArray: тук се създава първоначален масив testArr и outputArr е крайният транспониран масив.

Работен лист Функция. Транспониране

Вместо това може да искате да транспонирате масив в Excel. За да направите това, можете да използвате функцията за транспониране на работен лист на Excel.

Тази процедура ще транспонира 2D масив в диапазон на Excel, като използва функцията за транспониране на работен лист:

12345678910111213141516171819202122232425 Sub TestTransposeArray_Worksheetfx ()Dim maxX As Long, minX As LongDim maxY As Long, minY As Long„Създаване на масив и присвояване на стойностиDim MyArray (1 To 3, 1 To 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

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave