So führen Sie mehrere Mac-Excel-Dateien mit identischen, aber nicht in der richtigen Reihenfolge befindlichen Kopfzeilen zusammen

So führen Sie mehrere Mac-Excel-Dateien mit identischen, aber nicht in der richtigen Reihenfolge befindlichen Kopfzeilen zusammen

Ich verwende einen Mac. Meine Excel-Dateien haben übereinstimmende Kopfzeilen, die aber nicht in der richtigen Reihenfolge sind. Sie beginnen alle mit einer Kopfzeile namens „Abfrage“ und danach wird alles durcheinandergewürfelt.

Hier sind einige Header-Beispiele:

  • Anfrage|E-Mail|Facebook-URL|Twitter-URL|Telefonnummer|Zeitstempel|Instagram-URL|Fehler|LinkedIn-URL|Youtube-URL
  • Abfrage|Facebook-URL|LinkedIn-URL|Telefonnummer|Zeitstempel|YouTube-URL|E-Mail|Fehler|Instagram-URL|Twitter-URL
  • Anfrage|E-Mail|Facebook-URL|Instagram-URL|Zeitstempel|LinkedIn-URL|YouTube-URL|Telefonnummer|Twitter-URL|Fehler

Ich kann Terminal verwenden, um alle CSV-Dateien mit zusammenzuführen cat *.csv >combined.csv. Aber das funktioniert nicht gut, weil alle Header in der falschen Reihenfolge sind.

Irgendwelche Ideen, was ich tun kann?

Antwort1

Sie müssen ein CSV-fähiges Tool verwenden. Ein gutes istMüller

Wenn Sie beispielsweise diese 3 CSV-Dateien haben

#input_01.csv
a,b,c
0,2,5

#input_02.csv
b,a,c
0,2,5

#input_03.csv
b,a
0,2

Sie können laufen mlr --csv unsparsify ./input_0*.csv >./output.csv, um zu haben

+---+---+---+
| a | b | c |
+---+---+---+
| 0 | 2 | 5 |
| 2 | 0 | 5 |
| 2 | 0 | - |
+---+---+---+

Antwort2

Wenn Ihre Dateien enorm groß sind, sehen Sie sich Power Query an. Ich persönlich verfüge derzeit nicht über die Fähigkeiten, Ihre Spalten in einer bestimmten Reihenfolge neu anzuordnen, obwohl ich sie alphabetisch neu anordnen könnte ... glaube ich). Daher werde ich hier nicht darüber sprechen, wie man das erreicht, zumindest nicht heute.

Es kann erstaunliche Dinge tun (erstaunlich für jemanden, der es gewohnt ist, durch die Beschränkungen von Excel eingeschränkt zu sein und nicht genügend VBA-Erfahrung hat, um mehr als nur geringfügig komplizierte Dinge zu tun). Es kann die Aufgabe definitiv erledigen, so viel weiß ich, obwohl ich nicht glaube, dass ich es bald schaffen werde.

Wenn die Dateien jedoch nicht so groß sind, dass einSEHRWenn Sie keinen Ansatz mit einer einfachen Formel finden, der die Arbeit erledigen könnte, ohne dass Ihr Computer oder zumindest Excel zum Absturz kommt, dann ist der folgende Ansatz in der Tat sehr einfach.

Ich habe nicht gesehen, ob die von Ihnen verwendeten Dateien genauso weiterbestehen müssen wie bisher oder ob sie geändert werden können. Wenn sie so bleiben müssen, wie sie sind, erstellen Sie ein Unterverzeichnis und kopieren Sie alle Dateien dorthin. Wenn Sie sie ändern können, ist das ein kleines bisschen einfacher, da die Dateien nicht kopiert werden, aber wenn die Dateien weiterhin verwendet werden und eine einfache Neuanordnung der Spalten keine Probleme verursacht, wäre es viel angenehmer, sie so zu ändern, dass sie in Zukunft nie wieder geändert werden müssen. „Einmal und fertig“, wie man so schön sagt.

Um die Spalten ohne großen Aufwand neu zu sortieren, verwenden Sie einfach die folgende Formel:

=INDEX($I$1:$O$4,SEQUENCE(ROWS($I$1:$O$4)),MATCH($A$1:$G$1,$I$1:$O$1,0))

(Für die Formel habe ich eine Tabelle mit 6 Spalten und 4 Zeilen in A:G eingefügt und dann eine weitere in I:O mit denselben Überschriften, die jedoch im Verhältnis zur Tabelle A:G in gemischter Reihenfolge stehen.)

INDEX()wird die Tabelle gegeben, die Sie neu anordnen möchten, in diesem Fall I1:O4. Um anzuweisen, alle Zeilen zu verwenden, verwenden wir SEQUENCE()einen Parameter (da „Zeilen“ oder Ausgabe der erste Parameter ist, brauchen wir keinen weiteren). Dieser Parameter ist die Anzahl der Zeilen in der Tabelle, die Sie neu anordnen möchten. Mit sequence können Sie ihm entweder eine Bereichsadresse geben, wie ich es getan habe, oder einen benannten Bereich (warum man ihn wirklich so verwenden würde),ODERnur die Anzahl der Zeilen. Schließlich bekommt man das bei den meisten Tabellen, wenn man nur die rechte Seite des Bereichs kennt, oder? Oder vielleicht einfach einen Wert für die darüber liegenden Zeilen abziehen. Nur bei einem benannten Bereich muss man wirklich etwas anderes tun, als einfach etwas zu sagen wie „Hmm... I1:O4... muss 4 Zeilen enthalten, also gebe ich einfach 4 ein...“.

Der letzte Teil ist der gute Teil: die Reihenfolge der Spalten. INDEX()Sie können Spalten neu anordnen und/oder sie mehr als einmal erscheinen lassen. Wenn Sie die Reihenfolge kennen, die Sie für alle Dateien benötigen, können Sie einfach etwas wie eingeben, {4,2,19,7,...}um es mitzuteilen, aber Sie wissen es nicht. Die Reihenfolge kann beliebig und unterschiedlich sein.

Wenn Sie jedoch verwenden MATCH(), können Sie Excel die Arbeit für alle unterschiedlichen Reihenfolgen für Sie erledigen lassen. Sie geben an, MATCH()die Überschriften für eine Datei zu verwenden, egal welche, aber Sie verwenden die Überschriftenreihenfolge dieser Datei für ALLE Dateien, die Sie öffnen und neu anordnen. Match sucht also in den Überschriften der aktuellen Datei nach jeder einzelnen Überschrift und gibt die gefundene Reihenfolge an Excel zurück, das INDEX()dann Ihre Daten in derselben Überschriftenreihenfolge wie die Datei wieder zusammenstellt, die Sie als Quelle der Reihenfolge ausgewählt haben.

Fast noch besser ist die Tatsache, dass die Formel ein 2-D-SPILL-Array erzeugt, sodass durch Kopieren der Formel in eine einzelne Zelle die gesamte Ausgabetabelle erstellt wird.

Da Sie dies in einer Datei tun, die nach Abschluss der Arbeit gespeichert werden kann (entweder ein kopierter Satz oder die Originale, so oder so werden Sie mit Dateien arbeiten, die geändert und gespeichert werden können), möchten Sie als Nächstes die gesamte Ausgabe auswählen, dann kopieren und Paste|Special|Valuesnur Daten haben, keine Formelausgabe. Löschen Sie dann das Originalmaterial und lassen Sie nur die Ausgabetabelle übrig. Speichern. Fahren Sie mit dem nächsten fort.

Wenn Sie dies mit den Originalen tun möchten und diese weiter verwendet werden, können Sie die Originaltabelle auswählen und kopieren und dann Paste|Special|Formatsdie Tabellenformatierung in der Ausgabetabelle beibehalten. Tun Sie dies sogar, Paste|Special|Column widthsum das gleiche Erscheinungsbild beizubehalten.

Ich denke, Sie werden die Spaltenbreiten nicht brauchen, wenn Sie es sich recht überlegen, da Sie anscheinend vorhaben, CSV-Dateien zusammenzufügen ... Die Formatierung spielt praktisch KEINE Rolle. Wenn Sie dennoch Live-Dateien verwenden und diese in Zukunft verwenden möchten, führen Sie die Formatierungsschritte aus, bevor Sie die Originaltabellen löschen. Speichern Sie sie als Excel-Dateien und dann als CSV-Kopie. Ich vermute, dass es sich möglicherweise bereits um CSV-Dateien handelt, also machen Sie sich darüber keine Sorgen, aber denken Sie bei anderen Verwendungsmöglichkeiten des Ansatzes daran.

Öffnen Sie auf jeden Fall die erste Datei in der Liste, kopieren Sie diese Formel hinein und passen Sie die Adressierung nach Bedarf an. Kopieren Sie dann die Formelzelle, öffnen Sie die zweite Datei in der Liste und fügen Sie sie ein. Gehen Sie wie oben beschrieben vor, um sie in Daten umzuwandeln, löschen Sie die alten und speichern Sie sie dann wieder im gleichen CSV-Format. Wiederholen Sie den Vorgang, bis alle Dateien repariert sind. Führen Sie dann die Zusammenführung der Dateien durch.

Noch besser: Wenn Sie gut genug mit VBA umgehen können, öffnen Sie eine neue Datei, benennen und speichern Sie sie (als Makrodatei, also .xlsm), schreiben Sie ein Makro, um die Dateien im Verzeichnis zu durchsuchen, fügen Sie jeder die Formel hinzu, ändern Sie die Ausgabe in „Nur Daten“, löschen Sie alles links davon, sodass die erste Zelle der Ausgabe A1 ist, und speichern Sie jede als CSV. Speichern Sie diese neue Datei erneut. Dann rollen Sie sie aus und lassen Sie sie laufen.

verwandte Informationen