23.05.2016, 01:06 (Dieser Beitrag wurde zuletzt bearbeitet: 23.05.2016, 01:13 von Thomas1989.)
Hallo Leute, ich bitte um eure Hilfe, da ich einfach nicht vorankomme... Ich muss für meine Abschlussarbeit ca. 1000 Exceltabellen mit jeweils 500 Zeilen pro Datei bearbeiten.Jede der 1000 Ursprungsdateien besteht aus 2 verschiedenen Spalten namens „C1“ und „Paper ID“. Der Inhalt der Zellen der ersten Spalte muss wie folgt aufgeteilt werden: 1.Jede Zelle beinhaltet in eckigen Klammern Namen von verschiedenen Autoren, die durch Semikolons getrennt werden. Diese Namen muss ich nach den Semikolons auftrennen und in eigene Spalten bzw. in einzelne Zellen aufteilen. Dabei muss auch immer die Paper ID, also die zweite Spalte aus der Ursprungsdatei, in eine eigene Spalte dahinter oder davor eingefügt werden. Nach diesen eckigen Klammern bis zu den nächsten eckigen Klammern werden Daten über den Institutsnamen, Adresse und Land angezeigt. Diese Angaben müssen wiederum beim VORLETZTEN Komma in 2 Blöcke aufgeteilt werden.
2.Die Angaben VOR dem vorletztem Komma müssen in eine neue Spalte namens „Institut und ggf. Abteilung“ reinkopiert werden. 3.Die Angaben NACH dem vorletzten Komma müssen in eine neue Spalte namens „Stadt/Land“ kopiert werden. Und das alles muss ich für alle 500 Zellen pro Exceltabelle durchführen. Zum besseren Verständnis habe ich natürlich auch eine Exceltabelle mit einem Beispiel wie es aussehen sollte am Ende hochgeladen.
Hat jemand da eine Idee wie ich da am besten vorgehe? Vielen Dank im Voraus!
23.05.2016, 01:38 (Dieser Beitrag wurde zuletzt bearbeitet: 23.05.2016, 01:38 von Käpt'n Blaubär.)
Hallo,
Zitat:Zum besseren Verständnis habe ich natürlich auch eine Exceltabelle mit einem Beispiel wie es aussehen sollte am Ende hochgeladen.
Was ist schon natürlich beim Hochladen einer Tabelle, aber ich bin Brillenträger, kann das sein, daß ich aus diesem Grunde die uns angedrohte Tabelle / Datei natürlich nicht als solche erkennen kann?
ungeprüft und eher als brain-storming zu verstehen:
Code:
sub aufstalten() lr = cells(rows.count, "A").end(xlup).row for i = 1 to lr Tx = split(cells(i,"A"), ";") For j = 0 to ubound(Tx) cells(i, 3+2*j) = Tx(j) cells(i,4+2*j) = cells(i,"B") next j next i end sub
Die Aufspaltung der Verlage ist ohne Beispieldatei für mich nicht zu programmieren.
mfg
Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:1 Nutzer sagt Danke an Fennek für diesen Beitrag 28 • Thomas1989
Formatierung des Textes im Beitrag ist eigentlich nicht nötig.
(23.05.2016, 01:06)Thomas1989 schrieb: Zum besseren Verständnis habe ich natürlich auch eine Exceltabelle mit einem Beispiel wie es aussehen sollte am Ende hochgeladen.
Nicht nur den "Anhang (Attachment) hinzufügen", sondern auch "in den Beitrag einfügen"!
Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:1 Nutzer sagt Danke an Rabe für diesen Beitrag 28 • Thomas1989
23.05.2016, 13:13 (Dieser Beitrag wurde zuletzt bearbeitet: 23.05.2016, 13:13 von Thomas1989.
Bearbeitungsgrund: Beitragsaktualisierung
)
Oh man, tut mir leid! Hab das gestern spät abends alles geschrieben und total vergessen die Beispieldatei hochzuladen... Hab die Beispieltabelle nun hochgeladen!
nachdem ich mir die Datei angesehen habe und eine Zwischenlösung programmiert habe (siehe Anhang) bin ich zu der Meinung gekommen, dass die Anfrage m.E. zu komplex für ein kostenloses Forum ist. Die ist eher die Aufgabe für einen Dienstleister, der vermutlich mehrere Tagessätze fakturiert.
mfg
PS Für einen Tagessatz schreibe ich den Code fertig, alle Erweiterungen, (viele Tabellen, viele Dateien, Spezialfälle) sind zusätzlicher Aufwand
23.05.2016, 20:05 (Dieser Beitrag wurde zuletzt bearbeitet: 23.05.2016, 20:05 von GMG-CC.)
Moin Moin,
also, ich habe mir aus Gründen meiner Daten-Hygiene NUR die Datei ohne Makros (genauer gesagt: die *.xls) herunter geladen und diese (auch ohne VBA) bearbeitet. Power Query ist das Schlüsselwort. Im Prinzip sollte das Ergebnis stimmen.
Aber nur im Prinzip, denn die Basis-Daten sind nicht immer so, wie es (wohl) sein sollte. Beispiel: Zeile 399:
Da fehlt jeglicher Autor. So etwas müsste per Hand nachbearbeitet werden. In meiner Auswertung sind das 3 Zeilen. Ach ja, ich sehe gerade, dass du ein Excel hast, welches etwas "kastriert" ist. Es muss schon eine PC-Version >=2010 sein, wenn du PQ einsetzen willst.
Und last but not least: Ich habe hier nur das Ergebnis präsentiert, weil (auch) ich der Meinung bin, dass ein Forum Hilfe zur Selbsthilfe und keine Komplettlösungen größeren Umfangs bieten sollte. Mehr zu dem Thema gerne nach Anfrage per PM/eMail.
Beste Grüße Günther
Excel-ist-sexy.de …schau doch mal rein! Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
nach einigem Nachdenken werde ich hier einen Vorschlag veröffentlichen, der die Liste einer Datei in das gewünschte Format umsetzt.
Schauen wir mal, ob der Fragesteller damit zurecht kommt.
Code:
Sub sSplit() Start = Timer Dim Ori As Worksheet Dim Spl As Worksheet
Set Ori = Sheets("Ursprungsdatei") Set Spl = Sheets("split")
Spl.Cells.Clear
For i = 2 To Ori.Cells(Rows.Count, "A").End(xlUp).Row 'Zähler für Ori Tx = Split(Replace(Replace(Ori.Cells(i, "A"), "[", "~"), "] ", "~"), "~")
For k = 1 To UBound(Tx) Step 2 Nm = Split(Tx(k), ";") For Each A In Nm j = j + 1 'Zähler für split Spl.Cells(j, "A") = Ori.Cells(i, "B") Spl.Cells(j, "B") = Trim(A) Spl.Cells(j, "C") = Tx(k + 1) Next A Next k Next i Spl.Columns("C").Replace ";", "" MsgBox Timer - Start End Sub
mfg
PS: der code ist durch snb inspiriert
Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:1 Nutzer sagt Danke an Fennek für diesen Beitrag 28 • Thomas1989