Dreidimensionale Transpositionen (Microsoft Excel)
Als ehemaliger starker Lotus 1-2-3-Benutzer bei einem früheren Job wurde Patti SEHR an eine Funktion gebunden, die in Excel schmerzlich fehlt: die Fähigkeit, Daten in drei Dimensionen zu transponieren. Die zweidimensionale Umsetzung wird in Excel unterstützt, aber Patti hat keine Möglichkeit gefunden, eine Zeile, Spalte oder Tabelle über einen Stapel von Arbeitsblättern zu verteilen. Dies war eine Funktion, die täglich von allen in ihrem Finanzbüro genutzt wurde, und sie vermisst sie wirklich.
Patti hat recht; In Excel ist hierfür keine Funktion integriert. Die nächstgelegene Option ist die Verwendung einer PivotTable und der darin enthaltenen Funktionen „Seiten anzeigen“. Im Allgemeinen führen Sie die folgenden Schritte aus:
-
Erstellen Sie aus Ihren Daten wie gewohnt eine PivotTable.
-
Platzieren Sie die Spalte, aus der Arbeitsblätter erstellt werden sollen, im Abschnitt „Berichtsfilter“ der PivotTable.
-
Zeigen Sie die Registerkarte Optionen des Menübands an. (Diese Registerkarte ist nur sichtbar, wenn Sie an einer PivotTable arbeiten.)
-
Klicken Sie in der Gruppe PivotTable am linken Ende des Menübands auf den Abwärtspfeil neben dem Werkzeug Optionen.
-
Wählen Sie Berichtsfilterseiten anzeigen. Excel fordert Sie auf, zu bestätigen, dass Sie die Seiten anzeigen möchten.
-
6 Klicken Sie auf OK.
Am Ende erhalten Sie eine Reihe von Arbeitsblättern, eines für jeden Eintrag in der Spalte, die Sie in Schritt 2 angegeben haben. Diese Arbeitsblätter enthalten jeweils eine „Seite“ der PivotTable.
Wenn dies immer noch nicht ganz das tut, was Sie wollen, müssen Sie ein Makro verwenden, um die Daten zu transponieren. Ein solches Makro kann sehr komplex werden, aber im Grunde muss es nur Ihre Datentabelle durchgehen und jede Zeile (oder Spalte) von Daten in ein eigenes Arbeitsblatt verschieben.
Das folgende Makro (Transpose3D) nimmt beispielsweise jede Zeile aus einem ausgewählten Zellbereich und platziert diese Zeile in einem eigenen, neu erstellten Arbeitsblatt.
Sub Transpose3D() Dim rngTbl As Range Dim wsName As String Dim R As Integer Dim C As Integer Dim i As Integer Dim j As Integer Dim Killit As Integer Dim RCount As Integer Dim CCount As Integer Dim Table1() As Variant Dim Row1() As Variant RCount = Selection.Rows.Count CCount = Selection.Columns.Count If RCount < 2 Then MsgBox ("Error; Select a range with more than one row.") GoTo EndItAll End If wsName = ActiveSheet.Name R = ActiveCell.Row C = ActiveCell.Column Set rngTbl = Selection ReDim Table1(1 To RCount, 1 To CCount) ReDim Row1(1 To 1, 1 To CCount) Table1() = rngTbl.Value On Error GoTo Abend For i = 1 To RCount If SheetExists(wsName & "_Row_" & i) Then Killit = MsgBox("Sheet " & wsName & "_Row_" & i & _ " Already Exists!" & vbCrLf & _ " Cancel: Stop Transposition" & vbCrLf & _ " OK: Delete Sheet and Continue", vbOKCancel) If Killit = vbCancel Then GoTo EndItAll Application.DisplayAlerts = False Sheets(wsName & "_Row_" & i).Delete Application.DisplayAlerts = True End If Sheets.Add ActiveSheet.Name = wsName & "_Row_" & i Cells(R, C).Select For j = 1 To CCount Row1(1, j) = Table1(i, j) Next j Range(ActiveCell, ActiveCell.Offset(0, CCount - 1)) = Row1() Sheets(wsName).Select Next i GoTo EndItAll Abend: MsgBox ("Error in Routine Transpose3D.") EndItAll: Application.DisplayAlerts = True End Sub
Function SheetExists(SheetName As String) As Boolean Dim ws As Worksheet SheetExists = False For Each ws In ThisWorkbook.Worksheets If ws.Name = SheetName Then SheetExists = True Exit For End If Next ws End Function
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (11246) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365. Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: