Wie Sie aus einer "vielen" zeilenbasierten Relation ein "eins" -Spalten-basiertes Layout machen

710
jolesexcel

Verzeihen Sie mein Englisch. Ich suche nach einer Methode zur Umwandlung von Daten für eine Reihe von Produkten. Der Datensatz, den ich habe, ist eine Beziehung, in der Attribute in Zeilen aufgeführt sind, und ich möchte, dass diese Attribute die Spaltenüberschriften sind, die auf die Werte verweisen und mit diesen Attributen und den Produkten übereinstimmen, denen sie zugeordnet sind. Mein bestes Beispiel wäre folgendes (für ein Produkt):

before

Sollte umgewandelt werden in:

after

Es gibt Tausende von individuellen "Teilenummern", so dass eine einfache Transponierung es nicht schneidet ...

2
Ich denke, das Wort, nach dem Sie suchen, ist "transponieren" - sehen Sie, ob Ihnen das hilft. Raystafarian vor 9 Jahren 0
Das Transponieren ist leider nicht machbar, nicht jedes Produkt stimmt mit allen Attributen in Spalte B überein. Ich hoffe, das macht Sinn. jolesexcel vor 9 Jahren 0
Die Transponierung würde sicherlich funktionieren, wenn ich Ihre Datenstruktur verstehe. Raystafarian vor 9 Jahren 0
Es tut mir leid, ich glaube, ich habe meine Antwort nicht richtig formuliert. @Iszi hat jedoch die Methode bereitgestellt, die funktioniert hat. Danke für deinen Beitrag! jolesexcel vor 9 Jahren 0

1 Antwort auf die Frage

1
Iszi

Das ist ein bisschen hackig, aber es sollte funktionieren, wenn meine "Annahmen und Interpretationen" richtig sind.


Annahmen und Interpretation

Annahme 1 : Ihre Teilenummern sind alle eindeutig und Ihre AttributeIdentifier sind für alle Attribute, die in jeder Spalte dargestellt werden sollen, identisch.

Annahme 2 : AttributeIdentifiers sind innerhalb jedes Teils eindeutig, d. H., Es werden niemals zwei Zeilen mit demselben AttributIdentifier und derselben Teilenummer vorhanden sein.

Annahme 3 : Die Originaldaten haben Kopfzeilen in Zeile 1, und die Daten werden ab Zeile 2 fortlaufend aufgefüllt.

Annahme 4 : Die Originaldaten sind ähnlich den bereitgestellten Screenshots angeordnet. "Teilenummern" befinden sich in Spalte A und "AttributeIdentifiers" in Spalte B, "Werte" in Spalte C und es gibt keine anderen Daten in dem Arbeitsblatt, die für dieses Problem relevant sind.

Interpretation: Sie möchten, dass die Teilenummern in Spalte A verbleiben und alle Attribute für diesen Teil in einer Zeile unter Überschriften entsprechend ihrem AttributeIdentifier aufgeführt werden.


Lösung

  1. Erstellen Sie ein neues Blatt in derselben Arbeitsmappe.
  2. Benennen Sie das erste Blatt Old Dataund das zweite Blatt New Report.
  3. Kopieren 'Old Data'!A:Anach 'New Report'!A:A.
  4. Führen Sie "Duplikate entfernen auf" aus 'New Report'!A:A.
  5. Kopieren 'Old Data'!B:Bnach 'New Report'!B:B.
  6. Führen Sie "Duplikate entfernen" ein 'New Report'!B:B.
    • Stellen Sie sicher, dass Sie die Auswahl für diesen Vorgang nicht über diese Spalte hinaus erweitern.
  7. Löschen Sie 'New Report'!B1und verschieben Sie die verbleibenden Zellen in dieser Spalte nach oben.
  8. Wählen Sie alle Zellen aus, in denen sich Daten befinden 'New Report'!B:B. KOPIEREN Sie diese Zellen und fügen Sie sie mit "Einfügen Spezial" und "Transponieren" ein 'New Report'!C1.
  9. Löschen 'New Report'!B:B. Vergewissern Sie sich, dass die 'New Report'!C:CSchichten verschoben werden, um ihren Platz einzunehmen.
  10. Fügen Sie links von eine neue Spalte hinzu 'Old Data'!A:A.
    • Hinweis: Dadurch werden alle Spalten nach rechts verschoben, so dass "Teilenummer" in Spalte B usw. angezeigt wird.
    • (Optional) Stellen Sie 'Old Data'!A1auf UID.
  11. Stellen Sie 'Old Data'!A2auf =CONCATENATE(B2,C2).
  12. Kopieren 'Old Data'!A2Sie die gesamte Spalte bis zum Ende des Datensatzes.
  13. Setzen Sie 'New Report'!B2auf: =IFERROR(VLOOKUP(CONCATENATE($A2,B$1),'Old Data'!$A:$D,4,FALSE),"").
  14. Kopieren 'New Report'!B2Sie den Rest der Spalte bis zum Ende des Datensatzes.
  15. Kopieren Sie alle Zellen in 'New Report'!B:B, beginnend mit 'New Report'!B2und bis zum Ende des Datensatzes, in die verbleibenden Spalten auf der rechten Seite.
  16. Wählen Sie das gesamte 'New Report'Blatt aus. Kopieren Sie es und fügen Sie es an Ort und Stelle in "As Values" ein, um die Daten zu sperren.
  17. (Optional) Löschen 'Old Data'!A:A.

Erklärung zu Schritt 14

Die Formel sucht kurz nach "Old Data" nach einem geeigneten Wert, der in der Zelle entsprechend der übereinstimmenden "Teilenummer" und "AttributeIdentifier" platziert werden soll. Wenn keine gefunden wird, bleibt die Zelle leer.


Hinweis: Ich habe diese Lösung für Ihren Anwendungsfall nicht persönlich getestet. Ich bin jedoch mit den Schritten vertraut, um einigermaßen sicher zu sein, dass es für Sie ohne großen Änderungsbedarf funktionieren sollte. Bitte lassen Sie mich wissen, wenn Sie auf Fehler stoßen.

Das funktionierte perfekt, ich änderte die Formel in `= IFERROR (VLOOKUP (CONCATENATE ($ A2, B $ 1)), 'Old Data'! $ A: $ D, 4, FALSE)," "), um auf die Datenverschiebung durch zu verweisen Hinzufügen der zusätzlichen Spalte in Old Data. Vielen Dank! jolesexcel vor 9 Jahren 0
@jolesexcel Guter Punkt. Entschuldigung, das habe ich nicht verstanden. Ich bin froh, dass es funktioniert hat. Iszi vor 9 Jahren 0