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:

  1. Erstellen Sie aus Ihren Daten wie gewohnt eine PivotTable.

  2. Platzieren Sie die Spalte, aus der Arbeitsblätter erstellt werden sollen, im Abschnitt „Seiten“ der PivotTable.

  3. Klicken Sie in der PivotTable-Symbolleiste auf die Option PivotTable links in der Symbolleiste. Excel zeigt eine Reihe von Optionen an, die Sie auswählen können.

  4. Wählen Sie Seiten anzeigen. Excel fordert Sie auf, zu bestätigen, dass Sie die Seiten anzeigen möchten.

  5. OK klicken.

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 (11245) gilt für Microsoft Excel 97, 2000, 2002 und 2003.

Eine Version dieses Tippes für die Multifunktionsleistenoberfläche von Excel (Excel 2007 und höher) finden Sie hier: