Inhalte einer Zelle aufteilen auf einzelne Zellen
#1
Sad 
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!

Viele Grüße
Thomas
Antwortento top
#2
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?
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

?mage
[-] Folgende(r) 1 Benutzer sagt Danke an Käpt'n Blaubär für diesen Beitrag:
  • Thomas1989
Antwortento top
#3
Hallo,

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 Benutzer sagt Danke an Fennek für diesen Beitrag:
  • Thomas1989
Antwortento top
#4
Hi Thomas,

Formatierung des Textes im Beitrag ist eigentlich nicht nötig.

(23.05.2016, 00: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 Benutzer sagt Danke an Rabe für diesen Beitrag:
  • Thomas1989
Antwortento top
#5
Oh man, tut mir leid! Hab das gestern spät abends alles geschrieben und total vergessen die Beispieldatei hochzuladen...
Hab die Beispieltabelle nun hochgeladen!

.xltm   Arbeitsmappe #1.xltm (Größe: 135,63 KB / Downloads: 4)
.xls   Arbeitsmappe_#1.xls (Größe: 375,5 KB / Downloads: 4)
Antwortento top
#6
Hallo,

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


Angehängte Dateien
.xlsx   cle Arbeitsmappe_#2.xlsx (Größe: 181,36 KB / Downloads: 2)
Antwortento top
#7
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:

Zitat:RWTH Univ Hosp Aachen, Inst Mol Pathobiochem Expt Gene Therapy & Clin Ch, D-52074 Aachen, Germany | WOS:000362238600011


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.


Angehängte Dateien
.xlsx   AutorenSplitting.xlsx (Größe: 88,39 KB / Downloads: 3)
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!
Antwortento top
#8
Hallo,

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 Benutzer sagt Danke an Fennek für diesen Beitrag:
  • Thomas1989
Antwortento top
#9
Thumbs Up 
Ich habs letztlich mit Python-Skripte geschafft, aber der Code von Fennek hat auch funktioniert! Vielen lieben Dank!  Thumps_up
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste