Как транспонировать диапазон в vba (с примером)
Вы можете использовать следующий базовый синтаксис для транспонирования диапазона с помощью VBA:
SubTransposeRange ()
'specify range to transpose
MyRange = Range(" A1:B5 ")
'find dimensions of range
XUpper = UBound(MyRange, 1)
XLower = LBound(MyRange, 1)
YUpper = UBound(MyRange, 2)
YLower = LBound(MyRange, 2)
'transpose range
Range(" D1 ").Resize(YUpper - YLower + 1, XUpper - XLower + 1).Value = _
WorksheetFunction.Transpose(MyRange)
End Sub
В этом конкретном примере будут транспонированы ячейки в диапазоне A1:B5 и отображен транспонированный диапазон, начиная с ячейки D1 .
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: как транспонировать диапазон в VBA
Допустим, у нас есть следующий набор данных в Excel, содержащий информацию о различных баскетболистах:
Допустим, мы хотим транспонировать диапазон A1:B5 и отобразить транспонированный диапазон, начиная с ячейки D1 .
Для этого мы можем создать следующий макрос:
SubTransposeRange ()
'specify range to transpose
MyRange = Range(" A1:B5 ")
'find dimensions of range
XUpper = UBound(MyRange, 1)
XLower = LBound(MyRange, 1)
YUpper = UBound(MyRange, 2)
YLower = LBound(MyRange, 2)
'transpose range
Range(" D1 ").Resize(YUpper - YLower + 1, XUpper - XLower + 1).Value = _
WorksheetFunction.Transpose(MyRange)
End Sub
Когда мы запускаем этот макрос, мы получаем следующий вывод:
Обратите внимание, что транспонированный диапазон отображается, начиная с ячейки D1 .
Другими словами, строки и столбцы меняются местами.
Чтобы транспонировать другой диапазон, просто замените A1:B5 в макросе другим диапазоном.
Примечание . Полную документацию по методу VBA Transpose можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:
VBA: как подсчитать ячейки с определенным текстом
VBA: как подсчитать количество строк в диапазоне
VBA: как писать функции COUNTIF и COUNTIFS