Виждали сме функция за транспониране в работен лист на Excel, когато поставяме която и да е таблица с данни на работния лист, а това, което транспонира, е, че променя позицията на редове и колони, т.е. функция във VBA, ние я използваме с метода Application.worksheet във VBA.
Как да транспонирам във VBA?
Превключването на редове и колони е една от техниките за манипулиране на данни, които почти всички потребители правят в Excel. Процесът на преобразуване на хоризонтални данни във вертикални и вертикални данни в хоризонтални се нарича като „Транспониране“ в Excel. Сигурен съм, че трябва да сте запознати с транспонирането в обикновен работен лист. В тази статия ще ви покажем как да използвате метода за транспониране при кодиране на VBA.
Можем да транспонираме във VBA, като използваме два метода.
- Транспонирайте с помощта на формула TRANSPOSE.
- Транспонирайте с помощта на специален метод за поставяне.
Когато транспонираме, ние разменяме редове с колони и колони с редове. Например, ако данните са в масив 4 X 3, тогава те стават масив 3 X 4.
Нека да видим няколко примера за транспониране на колона в ред във VBA.
![](https://cdn.know-base.net/1851219/vba_transpose_step_by_step_top_2_methods_to_transpose_in_vba.jpg.webp)
# 1 - Транспониране на VBA с помощта на формула TRANSPOSE
Подобно на това как използваме TRANSPOSE в Excel по подобен начин, можем да използваме формулата TRANSPOSE и във VBA. Ние нямаме формула TRANSPOSE във VBA, така че трябва да я използваме в класа Function Worksheet.
Например погледнете изображението с данни по-долу.
![](https://cdn.know-base.net/1851219/vba_transpose_step_by_step_top_2_methods_to_transpose_in_vba_2.jpg.webp)
Ще се опитаме да транспонираме този масив от стойности. Следвайте стъпките по-долу, за да транспонирате данните.
Стъпка 1: Стартирайте подпроцедурата.
Код:
Sub Transpose_Example1 () Край Sub
![](https://cdn.know-base.net/1851219/vba_transpose_step_by_step_top_2_methods_to_transpose_in_vba_3.jpg.webp)
Стъпка 2: Първо, трябва да решим къде ще транспонираме данните. В това избрах да транспонирам от клетка D1 в H2. Така че, въведете кода на VBA като диапазон (“D1: H2”). Стойност =
Код:
Sub Transpose_Example1 () Диапазон ("D1: H2"). Стойност = Край Sub
![](https://cdn.know-base.net/1851219/vba_transpose_step_by_step_top_2_methods_to_transpose_in_vba_4.jpg.webp)
Стъпка 3: Сега, в гореспоменатия диапазон, се нуждаем от стойността от диапазон А1 до В5. За да стигнете до този отворен клас „Работен лист“ и изберете формулата „Транспониране“.
![](https://cdn.know-base.net/1851219/vba_transpose_step_by_step_top_2_methods_to_transpose_in_vba_5.jpg.webp)
Стъпка 4: В Arg 1 предоставете диапазона на източника на данни, т.е. диапазон („A1: D5“) .
Код:
Sub Transpose_Example1 () Range ("D1: H2"). Value = WorksheetFunction.Transpose (Range ("A1: D5")) End Sub
![](https://cdn.know-base.net/1851219/vba_transpose_step_by_step_top_2_methods_to_transpose_in_vba_6.jpg.webp)
Добре, приключихме с кодирането на формула TRANSPOSE. Сега стартирайте кода, за да видите резултата в диапазона от клетки от D1 до H2.
![](https://cdn.know-base.net/1851219/vba_transpose_step_by_step_top_2_methods_to_transpose_in_vba.gif)
Както видяхме на горното изображение, той преобразува диапазона от клетки от колони в редове.
# 2 - Транспониране на VBA с помощта на специален метод за поставяне
Можем също да транспонираме с помощта на Paste Special метод. Помислете за същите данни и за този пример.
![](https://cdn.know-base.net/1851219/vba_transpose_step_by_step_top_2_methods_to_transpose_in_vba_2.jpg.webp)
Първото нещо, което трябва да направим, за да транспонираме, е да копираме данните. Така че напишете кода като Range (“A1: B5”)
Код:
Sub Transpose_Example2 () Диапазон ("A1: B5"). Копиране Край Sub
![](https://cdn.know-base.net/1851219/vba_transpose_step_by_step_top_2_methods_to_transpose_in_vba_7.jpg.webp)
Следващото нещо е, че трябва да решим къде ще поставим данните. В този случай съм избрал D1 като желаната клетка-дестинация.
Код:
Sub Transpose_Example2 () Диапазон ("A1: B5"). Копиране на диапазон ("D1"). Крайна под
![](https://cdn.know-base.net/1851219/vba_transpose_step_by_step_top_2_methods_to_transpose_in_vba_8.jpg.webp)
След като бъде избрана желаната клетка за местоназначение, трябва да изберем „Поставяне на специален метод“.
![](https://cdn.know-base.net/1851219/vba_transpose_step_by_step_top_2_methods_to_transpose_in_vba_9.jpg.webp)
Със специална паста можем да изпълняваме всички действия, които имаме, с обикновени методи за специална паста в работен лист.
Игнорирайте всички параметри и изберете последния параметър, т.е. Транспониране, и направете това като TRUE.
Код:
Sub Transpose_Example2 () Диапазон ("A1: B5"). Копиране на диапазон ("D1"). PasteSpecial Transpose: = True End Sub
![](https://cdn.know-base.net/1851219/vba_transpose_step_by_step_top_2_methods_to_transpose_in_vba_10.jpg.webp)
Това също ще транспонира данните като предишния метод.
![](https://cdn.know-base.net/1851219/vba_transpose_step_by_step_top_2_methods_to_transpose_in_vba_2.gif)
По този начин можем да използваме формулата TRANSPOSE или Paste Special, за да транспонираме данните, за да превключваме редове в колони и колони в редове.
Неща за запомняне
- Ако използваме функцията за работен лист TRANSPOSE, е задължително да изчислим брой редове и колони за транспониране на данните. Ако имаме 5 реда и 3 колони, тогава докато транспонираме, става 3 реда и 5 колони.
- Ако искате същото форматиране, докато използвате специална паста, тогава трябва да използвате аргумента Тип на поставяне като „xlPasteFormats“.
Можете да изтеглите този VBA Transpose Excel Template от тук - VBA Transpose Excel Template.