Wie kann ich in Excel die Pivot-Funktion deaktivieren oder umkehren?

66

Ich habe Daten, die so aussehen:

Id | Loc1 | Loc2 | Loc3 | Loc4
---+------+------+------+-----
1  | NY   | CA   | TX   | IL
2  | WA   | OR   | NH   | RI

Und ich möchte es in dieses konvertieren:

Id | LocNum | Loc
---+--------+----
1  |   1    | NY
1  |   2    | CA
1  |   3    | TX
1  |   4    | IL
2  |   1    | WA
2  |   2    | OR
2  |   3    | NH
2  |   4    | RI

Was ist der einfachste Weg, dies in Excel 2007 zu tun?

Devuxer
quelle
1
Gefundene Antwort: stackoverflow.com/questions/32115219/…
Quandary

Antworten:

69

Sie können dies mit einem Pivot-Tisch tun.

  1. Erstellen Sie eine PivotTable mit mehreren Konsolidierungsbereichen. (Nur im Pivot Table Wizard. Aufruf mit ALT+ D, Pin Excel 2007)
  2. Wählen Sie "Ich erstelle meine eigenen Seitenfelder".
  3. Wählen Sie Ihre Daten aus.
  4. Doppelklicken Sie auf den Gesamtsummenwert, der sich an der Kreuzung von Row Grand und Column Grand in der unteren rechten Ecke Ihres Pivot-Tisches befindet.

Sie sollten ein neues Blatt sehen, das alle Daten in Ihrer Pivot-Tabelle enthält und so transponiert ist, wie Sie es suchen.

Datapig Technologies bietet Schritt-für-Schritt-Anleitungen , die komplizierter sind als nötig. In seinem Beispiel wird nur ein Teil des Datensatzes transponiert und die Pivot-Technik in Kombination mit TextToColumns verwendet . Aber es hat viele Bilder.

Beachten Sie, dass eine Pivot-Tabelle die Daten gruppiert. Wenn Sie möchten, dass die Gruppierung aufgehoben wird, müssen Sie die Pivot-Tabelle kopieren und als Werte "special" einfügen. Sie können dann die Lücken mit einer Technik wie der folgenden ausfüllen: http://www.contextures.com/xlDataEntry02.html

DaveParillo
quelle
Vielen Dank für Ihre Antwort, aber ich bin nicht ganz sicher, was Sie hier sagen. Was würde ich für das Beispiel in meiner Frage für Zeilenbeschriftungen, Spaltenbeschriftungen, Werte und Berichtsfilter verwenden?
Devuxer
Wenn ich Id in Zeilenbeschriftungen und Loc1 bis Loc4 in Spaltenbeschriftungen einfüge und dann auf die untere rechte Zelle (den Schnittpunkt der Gesamtsummen) klicke, wird ein neues Blatt mit einer Tabelle erstellt, aber es ist nicht das, was ich will. Es ist im Grunde nur eine Kopie der regulären Pivot-Tabelle.
Devuxer
Es tut mir leid - ich habe wichtige Daten ausgelassen. Die Pivot-Tabelle muss eine Pivot-Tabelle vom Typ 'Mehrere Konsolidierungsbereiche' sein, obwohl in diesem Fall nichts zu konsolidieren ist.
DaveParillo
4
Ah, okay, ich habe in der Hilfe nachgeschlagen und eine Möglichkeit gefunden, den alten Pivot-Tabellen-Assistenten in Excel 2007 zu installieren (Sie müssen ALT + D + P drücken). Jetzt kann ich Ihren Schritten folgen und es scheint zu funktionieren. Danke für Ihre Hilfe!
Devuxer
1
Hier ist, wie genau: stackoverflow.com/questions/32115219/…
Quandary
7

Wenn Ihre Daten keine Excel-Pivot-Tabelle sind, sondern nur Daten, möchten Sie sie möglicherweise mit einem einfachen VBA-Code "aus der Pivot-Position bringen". Der Code hängt von zwei benannten Bereichen ab, Quelle und Ziel. Quelle sind die Daten, deren Pivot-Funktion Sie aufheben möchten (ausschließlich der Spalten- / Zeilenköpfe, z. B. NY-RI in der Stichprobe), und Ziel ist die erste Zelle, in der Sie Ihr Ergebnis platzieren möchten.

Sub unPivot()
Dim oTarget As Range
Dim oSource As Range
Dim oCell As Range

Set oSource = Names("Source").RefersToRange
Set oTarget = Names("Target").RefersToRange

For Each oCell In oSource
    If oCell.Value <> "" Then
        oTarget.Activate
      ' get the column header
        oTarget.Value = oCell.Offset(-(oCell.Row - oSource.Row + 1), 0).Text 
      ' get the row header
         oTarget.Offset(0, 1).Value = oCell.Offset(0, _
           -(oCell.Column - oSource.Column + 1)).Text 
      ' get the value
        oTarget.Offset(0, 2).Value = oCell.Text 
      ' move the target pointer to the next row
        Set oTarget = oTarget.Offset(1, 0) 
    End If
Next
Beep
End Sub
TJ Melrose
quelle
1
Danke dafür. Funktioniert wie vorgesehen und spart mir viel Zeit.
Tigrou
Danke!! das ist einfach zauberhaft! viel besser als jigiry-pokery mit nicht schwenkbaren Berichten, die für mich nie funktioniert haben
trailmax
1
Das sieht gut aus, aber wie ich am besten beurteilen kann, funktioniert es nur für eine Tabelle mit nur einem Zeilenkopf. Wenn die Tabelle im Beispiel mehrere Zeilenköpfe hätte, beispielsweise eine "SubId" zusätzlich zum Feld "Id", würde dies nicht funktionieren. Gibt es eine einfache Möglichkeit, es so zu ändern, dass es in dieser Situation funktioniert?
Chris Stocking
4

Es gibt eine ganz schöne Lösung in Excel 2010, muss nur ein bisschen mit Pivot-Tisch spielen.

Erstellen Sie eine Pivot-Tabelle aus Ihren Daten mit diesen Einstellungen:

  • Keine Zwischensummen, keine Gesamtsummen
  • Berichtslayout: tabellarisches Formular, alle Artikelbezeichnungen wiederholen
  • Fügen Sie alle erforderlichen Spalten hinzu, und behalten Sie die zu transformierenden Spalten rechts bei
  • Öffnen Sie für jede zu transformierende Spalte die Feldeinstellungen. Wählen Sie auf der Registerkarte "Layout & Drucken" die Option "Elementbeschriftungen in Umrissform anzeigen" und aktivieren Sie die beiden Kontrollkästchen darunter
  • Kopieren Sie Ihre Tabelle an einen separaten Ort (nur Werte)
  • Wenn Ihre ursprünglichen Daten leere Zellen enthalten, filtern Sie nach leeren Werten in der rechten Spalte und löschen Sie diese Zeilen (filtern Sie nicht in der Pivot-Tabelle, da dies nicht bei Bedarf funktioniert!)
Máté Juhász
quelle
1
Dies ist sicherlich die beste Antwort, wenn Sie im Jahr 2010 und höher sind und in der Benutzeroberfläche überhaupt nicht offensichtlich sind. Toller Fund - leider habe ich nur eine positive Bewertung!
JKF
3

Das Beste, was ich mir bisher ausgedacht habe, ist folgendes:

Id   LocNum  Loc
---------------------------------
1    1       =INDEX(Data,A6,B6)
1    2       =INDEX(Data,A7,B7)
1    3       =INDEX(Data,A8,B8)
1    4       =INDEX(Data,A9,B9)
2    1       =INDEX(Data,A10,B10)
2    2       =INDEX(Data,A11,B11)
2    3       =INDEX(Data,A12,B12)
2    4       =INDEX(Data,A13,B13)

Das funktioniert, aber ich muss die IDs und LocNums manuell generieren. Wenn es eine automatisiertere Lösung gibt (abgesehen vom Schreiben eines Makros), teilen Sie mir dies bitte in einer separaten Antwort mit.

Devuxer
quelle
2

Wenn die Abmessungen Ihrer Daten mit dem in Ihrer Frage angegebenen Beispiel übereinstimmen, sollten die folgenden Formeln mit OFFSET das gewünschte Ergebnis liefern:

Vorausgesetzt

1 | NY | CA | TX | IL

2 | WA | ODER | NH | RI

liegen im Bereich A2: E3, dann eingeben

= OFFSET ($ A $ 2, BODEN ((REIHE (A2) -REIHE ($ A $ 2)) / 4,1), 0)

in F2 sagen, und

= MOD (REIHE (A2) -REIHE ($ A $ 2), 4) +1

in G2 sagen, und

= OFFSET ($ B $ 2, BODEN ((REIHE (B2) -REIHE ($ B $ 2)) / 4,1), MOD (REIHE (A2) -REIHE ($ A $ 2), 4)

in H2 sagen.

Kopieren Sie diese Formeln dann so weit wie nötig nach unten.

Dies ist die einfachste, reinste, eingebaute Formellösung, die ich mir vorstellen kann.

Aaa
quelle
1

Sie scheinen die Spalte "loc" erhalten zu haben (belegt durch Ihre erste Antwort), und jetzt brauchen Sie Hilfe beim Erhalten der beiden anderen Spalten.

Ihre erste Option besteht darin, einfach die ersten Zeilen (z. B. 12) in diese Spalten einzugeben und nach unten zu ziehen. Ich denke, Excel macht in diesem Fall das Richtige (ich habe auf diesem Computer kein Excel, um es sicher zu testen).

Wenn dies nicht funktioniert oder Sie mehr Programmierer möchten, verwenden Sie die Funktion row (). So etwas wie "= Floor (row () / 4)" für die ID-Spalte und "= mod (row (), 4) +1" für die LocNum-Spalte.


quelle
1

Es gibt ein parametrisches VBA-Konvertierungsdienstprogramm zum Aufheben oder Umkehren von Pivot-Daten in eine Datenbanktabelle

http://www.spreadsheet1.com/unpivot-data.html

Petros
quelle
1
Willkommen bei Super User! Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Peachy
1

Hier finden Sie ein nützliches Tool zum Aufheben und Normalisieren einer Pivot-Tabelle.

Normalisieren von Pivot Tabellen

Ich hoffe, es hilft.

L4a-Thompson
quelle
1
Willkommen bei SuperUser! Während das von Ihnen verknüpfte Tool eine Lösung bietet, ist dieser Beitrag nur nützlich, solange der Link aktiv bleibt. Um sicherzustellen, dass Ihr Beitrag auch in Zukunft nützlich bleibt, bearbeiten Sie Ihre Antwort so, dass zusätzliche Informationen zum Produkt sowie Informationen zur Behebung des in der Frage beschriebenen Problems enthalten sind. Vielen Dank!
Hervorragend
1

@ DaveParillo Antwort ist die beste Antwort für eine einzelne Tab-Tabelle. Ich wollte hier einige Extras hinzufügen.

Bei mehreren Spalten vor den nicht drehbaren Spalten

Diese Methode funktioniert nicht.

Youtube unpivot einfache Daten wie die Frage

Dies ist ein YouTube-Video, das zeigt, wie es auf einfache Weise gemacht wird. Ich habe den Teil über das Hinzufügen der Verknüpfung übersprungen und die @ devuxer-Verknüpfung verwendet, die in der DaveParillo-Antwort enthalten ist.

https://www.youtube.com/watch?v=pUXJLzqlEPk

BrinkDaDrink
quelle
3
Die Substanz Ihrer Antwort ist ein Link zu einem Video und der Inhalt wird nicht beschrieben. Wenn der Link nicht funktioniert oder nicht verfügbar ist, hat Ihre Antwort keinen Wert. Bitte geben Sie die wesentlichen Informationen in Ihrer Antwort an und verwenden Sie den Link nur zur Namensnennung und weiteren Erkundung.
Fixer1234
-2

Es ist viel einfacher als das. Klicken Sie einfach auf die Option "Transponieren" in "Inhalte einfügen ...", um die gewünschte Transposition zu erhalten.

C Tyler
quelle
1
Das würde nicht funktionieren.
zx8754