Jak transponować zakres w vba (z przykładem)
Do transpozycji zakresu przy użyciu języka VBA można użyć następującej podstawowej składni:
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
Ten konkretny przykład dokona transpozycji komórek w zakresie A1:B5 i wyświetli transponowany zakres zaczynając od komórki D1 .
Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.
Przykład: Jak transponować zakres w VBA
Załóżmy, że mamy w programie Excel następujący zbiór danych zawierający informacje o różnych koszykarzach:
Powiedzmy, że chcemy transponować zakres A1:B5 i wyświetlić transponowany zakres, zaczynając od komórki D1 .
W tym celu możemy utworzyć następujące makro:
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
Kiedy uruchomimy to makro, otrzymamy następujące dane wyjściowe:
Należy pamiętać, że transponowany zakres jest wyświetlany począwszy od komórki D1 .
Innymi słowy, wiersze i kolumny są odwrócone.
Aby dokonać transpozycji innego zakresu, po prostu zamień A1:B5 w makrze na inny zakres.
Uwaga : Pełną dokumentację metody transpozycji VBA można znaleźć tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:
VBA: Jak liczyć komórki zawierające określony tekst
VBA: Jak policzyć liczbę wierszy w zakresie
VBA: Jak pisać funkcje COUNTIFS i COUNTIFS