Zeichenfolge in mehrere Zellen "auslesen"
#1
Hallo zusammen,

Ich möchte für meine Abschlussarbeit gerne einige Metadaten, die ich zu einem Computer-Testverfahren erhoben habe nach bestimmten Kriterien auswerten. Im Wesentlichen geht es dabei um eine Art Spiel, bei der es für mich wichtig ist, welche Aktionen ein Spieler in einem bestimmten Zug unternommen hat. Diese Aktionen werden automatisch bei der Testdurchführung erfasst und als (sehr lange und umfangreiche) Textdatei (bzw. Zeichenkette) gespeichert. Ich würde diese lange Zeichenkette gerne nach bestimmten Informationen durchsuchen lassen und diese einzeln in Zellen einer Excel-Datei speichern.


Da dies schwer zu beschreiben ist, hier einmal ein Beispiel und meine konkrete Fragestellung dazu. Meine (insgesamt noch etwas komplexere) Fragestellung lässt sich im Grunde auf mehrere kleine Teilfragestellungen wie im folgenden Beispiel dargestellt reduzieren:


1) Ausgangspunkt ist eine Excel-Tabelle, bei der mehrere Informationen als zusammenhängende Zeichenfolge in einer einzigen Zelle einer Excel-Datei stehen d.h. zum Beispiel in dieser Art

A                                                                                                                                                                                                                                          B          C           D          E           F     .....

{Text-Text-Text-Start-position:X1-Text-position:X2-Text- position:X1- Text - position:X4- Text - position:X2-......-Ende-Text-Text-Text........}


2) Ich möchte nun gerne, dass ab einem bestimmten Startpunkt (oben als Start in der Zeichenkette bezeichnet) die Informationen hinter "position:" (d.h. die fetten Xi) in separate Zellen ausgelesen werden und zwar solange bis ein bestimmter Endpunkt (oben als Ende bezeichnet) erreicht wird. Alle Zeichen vor "Start" und nach "Ende" sowie die uninteressanten Zeichen zwischen den "position:" (oben als Text bezeichnet) sollen ignoriert werden. Ziel ist also eine Darstellung dieser Art:

A1                                                                                                                                                                                                                                          B          C           D          E           F     .....

{Text-Text-Text-Start-position:X1-Text-position:X2-Text- position:X1- Text - position:X4- Text - position:X2-......-Ende-Text-Text-Text........}                      X1       X2         X1       X4        X2     .....


Hat jemand eine Idee, wie man (oder ob man das überhaupt) mithilfe von Excel-Formeln und Zellbezug lösen kann?    

Das würde mir sehr weiterhelfen. Vielen Dank in jedem Fall und ein schönes Wochenende!

Beste Grüße,
Jörg

Edit: Ich habe nun auch eine Beispiel-Excel-Datei angehängt

Edit2: Ich habe nun noch eine zweite Datei mit ein paar mehr vorausgefüllten Musterzeilen angehängt, sodass man dort auch ein bisschen experimentieren kann und die Regel hinter den Einträgen vielleicht etwas klarer wird


Angehängte Dateien
.xlsx   Beispiel.xlsx (Größe: 9,6 KB / Downloads: 8)
.xlsx   Beispiel2.xlsx (Größe: 10,22 KB / Downloads: 10)
Top
#2
Hallo Jörg,

lad bitte eine Beispieldatei mit ein paar händisch eingetragenen Wunschergebnissen hoch. Dann wird's vllt. etwas klarer. https://www.clever-excel-forum.de/thread-326.html
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • JörgW
Top
#3
Danke für den Hinweis. Ich habe eine Excel-Datei als Attachement hinzugefügt   :)
Top
#4
Hi Jörg,

und wo? Ich nehme an, du hast vergessen, rechts den Button "Attachment hinzufügen" anzuklicken.

Ok, hat sich überschnitten.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#5
Ooch Mann...

wo sind denn Beispiele in deiner Datei? Und wo die eingetragenen Wunschergebnisse?
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • JörgW
Top
#6
Hallo,

wenn der gezeigte String in A1 steht:

Code:
Sub Main
i = 1
St = instr(1, cells(i,1), "Start")
En = instr(St, cells(i,1), "Ende")

Tx = mid(cells(i,1), St, En-St)
sp = split(Tx, ":")
for b = 0 to ubound(sp)
    cells(i, b+2) = split(sp(b), "-")(0)
next b
End Sub

Etwas "fine-tuning" ist noch nötig.

mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • JörgW
Top
#7
Lieber Fennek,

Vielen Dank schon einmal für deine Antwort! Ich verstehe deinen Code zwar noch nicht vollständig, weil ich nicht alle verwendeten Befehle kenne, aber das sieht grundsätzlich so aus, als ob es in die Richtung von dem geht, was ich gerne hätte.  Ich habe leider mit Excel bis jetzt noch (gar) nicht (und generell nur wenig) programmiert und immer nur mit Zellfunktionen gearbeitet und habe daher gehofft, dass es auch eine Lösung gibt, die allein mit den Standardformeln und Zellbezug auskommt. Aber ich habe schon befürchtet, dass das die Sache eher komplizierter als leichter macht.

Kannst du mir vielleicht noch eine gute Website / ein Wiki oder ähnliches empfehlen, wo ich die von dir verwendeten Funktionen (z.B. instr() & split()) im Detail  nachschlagen kann? Dann lerne ich mich da gerne noch ein  :)

Beste Grüße,
Jörg
Top
#8
Hallo Jörg,

da nur wenige Befehle genutzt wurde, ist es am einfachsten die Suchmaschine deines Vertrauens zu nutzen

Code:
Excel vba split

ebenso für die anderen.

Der Code prüft nur die Zelle A1, aber mit einer Schleife geht es auch für die Spalte A.

mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • JörgW
Top
#9
Ich bin fündig geworden. Danke!
Top
#10
Lieber WillWissen,


Danke für den Hinweis! Ich habe nun eine zweite Datei mit ein paar mehr vorausgefüllten Zeilen an den Originalpost angehängt. So ist es vielleicht noch etwas klarer. Die Originaldatei kann ich leider aus verschiedenen Gründen nicht hochladen. Dadurch wäre aber auch nicht viel gewonnen, da mehr Information als diese eine Zelle mit den Metadaten pro Person nicht vorliegt. Eine Lösung, die in meinem angehängten zweiten Beispiel funktioniert, kann ich problemlos selber auf meinen Datensatz übertragen. Alle Informationen, die man zur Lösung benötigt sind tatsächlich im Beispiel enthalten (auch wenn es nicht nach viel aussieht).

Beste Grüße,
Jörg
Top


Gehe zu:


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