Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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)
Antworten 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
Antworten Top
#3
Danke für den Hinweis. Ich habe eine Excel-Datei als Attachement hinzugefügt   :)
Antworten 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)
Antworten 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
Antworten 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
Antworten 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
Antworten 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
Antworten Top
#9
Ich bin fündig geworden. Danke!
Antworten 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
Antworten Top


Gehe zu:


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