É possível utilizar a seguinte sintaxe básica para transpor um intervalo utilizando o VBA:
Sub TransposeRange() 'especificar o intervalo a transpor MyRange = Range(" A1:B5 ") 'encontrar as dimensões do intervalo XUpper = UBound(MyRange, 1) XLower = LBound(MyRange, 1) YUpper = UBound(MyRange, 2) YLower = LBound(MyRange, 2) 'transpor o intervalo Range(" D1 ").Resize(YUpper - YLower + 1, XUpper - XLower + 1).Value = _ WorksheetFunction.Transpose(MyRange) End Sub
Este exemplo específico irá transpor as células no intervalo A1:B5 e apresentar o intervalo transposto que começa na célula D1 .
O exemplo seguinte mostra como utilizar esta sintaxe na prática.
Exemplo: Como transpor um intervalo no VBA
Suponha que temos o seguinte conjunto de dados no Excel que contém informações sobre vários jogadores de basquetebol:
Suponha que gostaríamos de transpor o intervalo A1:B5 e produzir o intervalo transposto começando na célula D1 .
Para o efeito, podemos criar a seguinte macro:
Sub TransposeRange() 'especificar o intervalo a transpor MyRange = Range(" A1:B5 ") 'encontrar as dimensões do intervalo XUpper = UBound(MyRange, 1) XLower = LBound(MyRange, 1) YUpper = UBound(MyRange, 2) YLower = LBound(MyRange, 2) 'transpor o intervalo Range(" D1 ").Resize(YUpper - YLower + 1, XUpper - XLower + 1).Value = _ WorksheetFunction.Transpose(MyRange) End Sub
Quando executamos esta macro, obtemos a seguinte saída:
Repare que o intervalo transposto é apresentado a partir da célula D1 .
Ou seja, as linhas e as colunas são trocadas.
Para transpor uma gama diferente, basta alterar A1:B5 na macro para um intervalo diferente.
Nota : Pode encontrar a documentação completa para o VBA Transpor método aqui.