Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1752to1756
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

6 Position eines Zeichen im Text auslese

6 Position eines Zeichen im Text auslese
13.04.2020 15:33:38
Siegfried
hallo wer kann mir bitte helfen.
Aus einem Text stelle ich mit =LÄNGE(AG4)-LÄNGE(WECHSELN(AG4;";";"")) fest wie viele ; in diesem Text enthalten sind. Angenommen es sind 6 ; vorhanden und ich möchte genau von dieser Position im Text weg den Rest des Textes erfassen, wie könnte ich die Position von dem 6 ; auslesen.
In der Funktion FINDEN soll/könnte man ja festlegen ab der wie vielten Position die Suche beginnen soll, hier wäre nun die Position von dem 6 ; eben gefragt.

40
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 6 Position eines Zeichen im Text auslese
13.04.2020 15:54:00
Daniel
Hi
Du kannst mit Wechseln gezielt das 6.Semikolon durch ein anderes Zeichen ersetzten (hierzu verwendet man den 4. Parameter von Wechseln), welches im Text sonst nicht vorkommt (ich nehme meistens "|") und dann mit Finden die Position dieses Zeichens ermitteln.
Eine andere Methode ist, dass man das 6. Semikolon durch 1000 Leerzeichen ersetzt, dann einfach den Text mit Rechts(...;1000) nimmt und mit Glätten die unnötigen Leerzeichen entfernt.
Gruß Daniel
AW: 6 Position eines Zeichen im Text auslese
13.04.2020 17:16:20
Siegfried
Danke Daniel, auf diesen Trick wäre ich nie gekommen.
Nun ein neues Kapitel, vielleicht hast du da auch eine Lösung.
In diesem Text kann sich auch eine Mailadresse befinden, frage daher nach @ ab wodurch ich jetzt festgestellt habe das eine Mailadresse vorhanden ist und kenne auch die Position von @.
Um nur diese Mailadresse auslesen zu können müsste ich nun das Trennzeichen ; vor und nach dem @ ermitteln, der danach wäre ja leichter mit FINDEN ab der Position @+1 das geringere Problem.
Glaube aber kaum das Finden nach Rückwärts auch sucht, oder?
Gruß Siegfried
Anzeige
AW: 6 Position eines Zeichen im Text auslese
14.04.2020 09:52:48
CitizenX
Hallo,
Text kann intelligent mit Regex ausgewertet werden.
Wenn Makro erlaubt ist, dann erstelle hierzu eine BSP Datei.
VG
Steffen
AW: 6 Position eines Zeichen im Text auslese
14.04.2020 12:41:23
Siegfried
Hallo Steffen,
erst einmal DANKE für dein Hilfeangebot, war Vormittag bei eine Infusion daher erst jetzt die Möglichkeit zu antworten.
Im Anhang die Musterdatei und was ich bis jetzt zusammengebracht habe.
Da nur die Daten vorhanden sind welche zu einem Platz gehören sind hier natürlich große Unterschiede in den Anzahl von Trennzeichen ;. Ich benötige aber die Werte immer in der gleichen Spalte da sie dann in die Endgültige Datei kopiert werden, siehe dazu Bild
Gruß Siegfried
https://www.herber.de/bbs/user/136687.xlsx
Userbild
Anzeige
AW: Kopieren einer Formel
14.04.2020 13:19:47
CitizenX
Oh ha Siegfried,
wie mir scheind, möchtest du aus den Daten im ersten Blatt Textinformationen auslesen( Name,PLZ.etc..)
Wenn die Reihenfolge der Inhalte und der Aufbau so ist , dann lässt sich was machen.
ich brauche nur etwas Zeit,komme heute nicht mehr dazu.
VG
Steffen
AW: 6 Position eines Zeichen im Text auslese
14.04.2020 12:05:06
Daniel
Hi
Ne, die Suche nach rechts ist in den Excelformeln leider nicht vorhanden. In VBA gäbs dafür InstrRev anstelle von Instr.
In Excel wirds etwas komplizierter.
Da muss man die Position eines Zeichens vor einem anderen Zeichen so ermitteln:
=Aggregat(14;6;Zeile($Z$1:$Z$100)/(Teil(A1;Zeile($Z$1:$Z$100)=";")/(Zeile($Z$1:$Z$100)<Finden("@"; A1));1)
Das "Zeile($Z$1:$Z$100)" richtet sich nach der Länge des Textes, dh du musst die Endzeile mindestens so groß wählen wie die Länge des längsten Textes (länger schadet nicht)
Gruß Daniel
Anzeige
AW: 6 Position eines Zeichen im Text auslese
14.04.2020 14:16:35
Siegfried
Hallo Daniel,
wäre es bitte möglich das du mir im Muster die Umsetzung deiner "AGGREGAT" Formel zeigen könntest.
In der Spalte "L" z.B. habe ich mir den Wert von ";" vor dem "@" errechnet, muss man natürlich jede Zeile kontrollieren ob es auch stimmen kann.
In Spalte "W" habe ich mir die Länge der Textzeilen errechnet und würde auf 247 kommen, daher vermute ich müsste dein Beispiel Zeile($Z$1:$Z$100) auf Zeile($Z$1:$Z$250) geändert werden, funktioniert aber trotzdem leider nicht.
Gruß Siegfried
AW: 6 Position eines Zeichen im Text auslese
14.04.2020 14:35:59
Daniel
Lade bitte eine Beispieldatei hoch, in der du alles so vorbereitet hast wie du es hier beschreibst und auch dein Formelversuch sollte enthalten sein.
Gruß Daniel
Anzeige
AW: 6 Position eines Zeichen im Text auslese
14.04.2020 15:02:16
Siegfried
Habe ich in der Antwort an Steffen bereits hochgeladen
AW: 6 Position eines Zeichen im Text auslese
14.04.2020 15:10:27
Daniel
Da hast du fuch die Mailadresse schon korrekt ausgewertet.
Da muss ich mich doch nicht mehr bemühen.
Gruß Daniel
AW: 6 Position eines Zeichen im Text auslese
14.04.2020 15:26:20
Siegfried
Ja aber mit dem Trick/Nachteil jede Mailadresse prüfen zu müssen da ja die Anzahl der Zeichen vor dem @ verschieden groß sind, wenn es da eine sichere Lösung gäbe würde mir das einiges an Arbeit ersparen.
Habe jetzt einmal in

=WENN(M2>0;FINDEN(";";AC2;M2-20);0) 
mit -20 vom gefundenen @ genommen, funktioniert aber nicht bei allen Datensätzen und die dann zu sehen ist gerade nicht einfach.
Denn ich habe noch ca. 40 Länder zur Lösung vor mir, nun und DEU, FRA, ITA usw. habe über einige Tausend Datensätze. Wäre schön wenn du eine bessere und vor allem Treffsichere Lösung hättest.
Gruß Siegfried
Anzeige
AW: 6 Position eines Zeichen im Text auslese
14.04.2020 16:24:27
Daniel
sorry, hatte vergessen, die Teilfunktion fertig zu schreiben, so ist es korrekt:
=Aggregat(14;6;Zeile($Z$1:$Z$300)/(Teil(AI2;Zeile($Z$1:$Z$100);1)=";")/(Zeile($Z$1:$Z$100)< Finden("@"; AI2));1)
also im Prinzip nur das ergänzen: .../(Teil(AI2;Zeile($Z$1:$Z$100);1)=";")/...
die Funktion FINDEN kannst du durch den Bezug auf die Zelle in Spalte M ersetzen, wenn du dort schon die Position des @ ermittelst.
gruß Daniel
AW: 6 Position eines Zeichen im Text auslese
14.04.2020 17:02:47
Siegfried
Hi Daniel,
habe zum 1. mal mit der AGGREGAT Funktion zu tun, da ist einiges für mich Bahnhof.
Hätte sie angewendet in der Zeile 4, hier wäre das erste Vorkommen von @ gegeben, aber leider er bringt mir #ZAHL! als Ergebnis.
Könntest du dir das Bitte nochmals ansehen?
Gruß Siegfried
Siehe Bilder dazu
Userbild
Userbild
Userbild
Anzeige
AW: 6 Position eines Zeichen im Text auslese
14.04.2020 17:21:52
Daniel
Stehen deine vollständigen Texte nicht in Spalte AI?
Warum dann jetzt AC?
Du solltest vermeiden, innerhalb eines Threads mit unterschiedlich strukturierten Dateinen zu arbeiten.
Wenn du nicht alle für mich notwendigen Informationen im Bild unterbringen kannst, solltest du immer die Datei mit hochladen.
Im Prinzip reichen ein paar Zeilen es muss nicht der vollständige Datensatz sein.
Gruß Daniel
AW: 6 Position eines Zeichen im Text auslese
14.04.2020 17:40:50
Siegfried
Hi Daniel,
entschuldige Änderung hat sich ergeben da ich die restlichen Spalten zur ; Berechnung entfernte.
da ich ja den Rest der überbleibt durch entfernen mit WECHSELN eliminiere brauche ich ja die Positionen der anderen ";" nicht mehr.
In Spalte "N" würde sich ja das gleiche ergeben, wo ist ; vor EUR
Habe dir den jetzt Stand als MUSTER 2 hochgeladen.
https://www.herber.de/bbs/user/136710.xlsx
Gruß Siegfried
Anzeige
AW: 6 Position eines Zeichen im Text auslese
14.04.2020 18:44:31
Siegfried
Hallo Daniel,
habe nun mal versucht AGGREGAT etwas zu verstehen, ist momentan ein Spanisches Dorf für mich.
Nun was ich auch nicht verstehe wenn ich die Formel in der Bearbeitungszeile öffne um zu sehen auf was sie zugreift, "AC4" ist markiert, kommt ja einmal im TEIL und FINDEN vor.
Aber was bedeutet die Markierung der Spalte "Z" warum sucht er da drinnen was und warum wird diese Spalte markiert? Siehe Bild
Userbild
Gruß Siegfried
AW: 6 Position eines Zeichen im Text auslese
14.04.2020 23:51:49
Daniel
hi
1. Aggregat ist eine Funktionale Erweiterung von bestehenden Auswertefunktionen (summe, min, max usw) um Fähigkeiten, die diese normalerweise nicht haben, wie bspw das ignorieren von ausgeblendeten Zeilen oder von Fehlerwerten (Aggregat ist die verbesserte Version von Teilergebnis)
2. in Berechnungen wird ein WAHR wie 1 und ein FALSCH wie 0 verwendet
3. Excel markiert immer alle Zellen, die die Formel verwendet, eine schöne Komfortfunktion, die das Arbeiten mit der Formel erleichtert.
das Zeile(Z1:Z300) dient hier nur dazu, eine Zählschleife von 1-300 zu erzeugen, um dann in der Berechnung auf die einzelnen Zeichen des Textes zugreifen zu können.
in Basic würde man For x = 1 to 300programmiern, in einer excelformel muss man diesen Weg gehen.
die verwendete Spalte ist beliebig.
das ganze ist also eine Matrixformel, welche in einer Schleife 300 Zwischenergebnisse erzeugt, von welchen dann über die eigestellte Auswertefunktion (hier 14 = KGrösste bzw Max) einer als Ergebnis verwendet wird.
da aber nicht alle Werte in die Auswertung eingehen sollen (wir brauchen nur die Positionsnummern der Semikolons, die vor dem @ liegen), muss man die unerwünschten aus der Berechnung herausnehmen.
dies macht man, in dem man die unter 1. und 2. genannten Punkte ausnutzt und mit den Werten eine Division durch die Bedingungsprüfung durchführt.
ist die Prüfung erfüllt, gibt das eine Division durch 1 und der Wert geht unverändert in die Auswertung ein.
ist die Prüfung nicht erfüllt, gibt das eine Division durch 0 und damit einen Fehler der aber ignoriert wird, dh dieser Wert geht nicht in die Auswertung ein.
so funktioniert das mit Aggregat.
leider hat MS die Fähigkeit zur Matrixberechnung erst ab der Funktionsnummer 14 implementiert, mit den kleineren Nummern geht das nicht.
Daher kann man nur KGrößte und KKleinste im Aggregat so nutzen (die folgenden Nummern sind zwar auch Matrixtauglich, aber in der Regel für Berechnungen uninteressant)
gruß Daniel
Anzeige
AW: 6 Position eines Zeichen im Text auslese
14.04.2020 23:51:50
Daniel
hi
1. Aggregat ist eine Funktionale Erweiterung von bestehenden Auswertefunktionen (summe, min, max usw) um Fähigkeiten, die diese normalerweise nicht haben, wie bspw das ignorieren von ausgeblendeten Zeilen oder von Fehlerwerten (Aggregat ist die verbesserte Version von Teilergebnis)
2. in Berechnungen wird ein WAHR wie 1 und ein FALSCH wie 0 verwendet
3. Excel markiert immer alle Zellen, die die Formel verwendet, eine schöne Komfortfunktion, die das Arbeiten mit der Formel erleichtert.
das Zeile(Z1:Z300) dient hier nur dazu, eine Zählschleife von 1-300 zu erzeugen, um dann in der Berechnung auf die einzelnen Zeichen des Textes zugreifen zu können.
in Basic würde man For x = 1 to 300programmiern, in einer excelformel muss man diesen Weg gehen.
die verwendete Spalte ist beliebig.
das ganze ist also eine Matrixformel, welche in einer Schleife 300 Zwischenergebnisse erzeugt, von welchen dann über die eigestellte Auswertefunktion (hier 14 = KGrösste bzw Max) einer als Ergebnis verwendet wird.
da aber nicht alle Werte in die Auswertung eingehen sollen (wir brauchen nur die Positionsnummern der Semikolons, die vor dem @ liegen), muss man die unerwünschten aus der Berechnung herausnehmen.
dies macht man, in dem man die unter 1. und 2. genannten Punkte ausnutzt und mit den Werten eine Division durch die Bedingungsprüfung durchführt.
ist die Prüfung erfüllt, gibt das eine Division durch 1 und der Wert geht unverändert in die Auswertung ein.
ist die Prüfung nicht erfüllt, gibt das eine Division durch 0 und damit einen Fehler der aber ignoriert wird, dh dieser Wert geht nicht in die Auswertung ein.
so funktioniert das mit Aggregat.
leider hat MS die Fähigkeit zur Matrixberechnung erst ab der Funktionsnummer 14 implementiert, mit den kleineren Nummern geht das nicht.
Daher kann man nur KGrößte und KKleinste im Aggregat so nutzen (die folgenden Nummern sind zwar auch Matrixtauglich, aber in der Regel für Berechnungen uninteressant)
gruß Daniel
Anzeige
AW: 6 Position eines Zeichen im Text auslese
14.04.2020 22:14:28
Daniel
Hi
vergrössere mal die Bearbeitungszeile oder aktiviere mit einem doppelklick die direkte Zellbearbeitung, so dass du die ganze Formel siehst, dann sollte dir dein Fehler auffallen.
Gruß Daniel
AW: 6 Position eines Zeichen im Text auslese
15.04.2020 10:37:53
Siegfried
Hallo Daniel,
hätte alles mögliche gem. deinen Anmerkungen Versucht aber finde nicht die Ursache meines Fehlers.
Dann mal gleich eine Verständnisfrage, ZEILE($Z$1:$Z$20) bezieht sich auf die Anzahl der zu durchsuchenden Zeilen oder liege ich da falsch?
Wäre es bitte möglich das du mein Muster direkt verwendest und mir dann sendest um meinen Fehler dann zu erkennen, DANKE.
Gruß Siegfried
AW: 6 Position eines Zeichen im Text auslese
15.04.2020 10:52:32
Daniel
Zeile(...) bezieht sich auf die Länge des zu durchsuchenden Textes.
Siehe hierzu auch meinen anderen Beitrag.
Meine Formel, die ich dir gezeigt habe, passt schon.
Du hast halt als fauler Copy-Paster die alte Formel nicht abgeändert, sondern die neue Formel kopiert und eingefügt.
Dabei hast du die alte Formel nicht gelöscht oder überschrieben, sondern die die neue Formel zur alten Formel hinzugefügt, so dass jetzt beide in der Zelle stehen.
Das fällt halt nicht auf, weil du den Zeilenumbruch mit kopiert hast und deswegen die alte Formel in der zweiten Zeile steht.
Wenn du die Bearbeitungszeile vergrößert (unteren Rand nach unten ziehen) dann siehst du es.
Du musst nur die alte Formel aus der Zelle löschen, so dass nur die neue stehen bleibt.
Gruß Daniel
AW: 6 Position eines Zeichen im Text auslese
15.04.2020 15:04:35
Daniel
UM es nochmal deutlich zu machen, wo dein fehler liegt:
das ist deine Formel in der Zelle, ich hoffe du siehst den Fehler:
Userbild
AW: 6 Position eines Zeichen im Text auslese
15.04.2020 08:12:43
CitizenX
Guten Morgen Siegfried,
falls noch interesse bsteht hab ich mal eine Auswertung per (UDF/Regex) umgesetzt.
Die UDF(User Defined Function) ist ein Makro welches Mittels Regex die Texte auswertet, mit Bezug auf deine Spaltenbezeichnung.
Dies bitte bei Änderunger Dieser beachten.
https://www.herber.de/bbs/user/136731.xlsm
VG
Steffen
AW: 6 Position eines Zeichen im Text auslese
15.04.2020 10:29:59
Siegfried
Hallo Steffen,
zu Beginn mal ein DANKE für deine Bemühungen. Ja von Regex habe ich schon einiges gehört, da und dort bereits Kleinigkeiten versucht, ist und bleibt derzeit ein Spanisches Dorf für mich.
Da ja die Grunddaten leider auch Unterschiede haben, habe es mit den Daten von AUT versucht und da habe ich Probleme unter NAMEN, OFFEN z.B. finde aber die Ursache nicht (Öffnungszeiten: gehört auf Offen: geändert) bzw. könnte ich nicht sagen was man in der Regex ändern müsste.
Anbei die Grunddaten von AUT, dies in TAB1 Importieren und dann in TAB AUT Kopieren bitte.
https://www.herber.de/bbs/user/136738.txt
Gruß Siegfried
AW: 6 Position eines Zeichen im Text auslese
15.04.2020 11:22:39
CitizenX
Hallo Siegfried,
lade mal bitte die Tabelle mit ALLEN Daten hoch, dann schauen wir mal.
VG
Steffen
AW: 6 Position eines Zeichen im Text auslese
15.04.2020 21:25:55
Siegfried
Hallo Steffen,
Aufbereitung mehrerer Datensätze mit Behebung der gröbsten Fehler hat leider etwas gedauert.
Ich würde es ja ohnehin nur Länderweise machen, aber dann hättest du natürlich nicht die Übersicht was wie vorkommt/vorkommen kann.
An und für sich bin ich von Regex sehr überrascht was man da alles machen kann wenn man sich auskennt.
Aber nun zu den mir aufgefallenen Problemen:
Bei den Telefonnummern welche einen / enthalten wird die Nummer abgeschnitten, jene die (0) dabei haben werden nicht ausgewertet und das + für die Landesvorwahl wird in der Auswertung nicht mehr mitgenommen. Wäre aber dringend erforderlich, Grund: Mit guten Navi-Programmen kannst du wenn im Datensatz hinterlegt diese Nummer direkt anrufen.
Bei den EUR Auswertungen wenn nur 0 EUR steht wird dies nicht ausgewertet, ersetze ich dies durch 0.00 EUR wird es ausgewertet.
Bei Offen erfolgt keine einzige Auswertung, Original ist Öffnungszeiten: in der Spalte Q hinterlegt, habe sie im ersten Beispiel auf Offen: überschrieben ebenso die Wochentage auf Mo., Di. usw. gekürzt, es gibt ja noch genug ältere Navi-Geräte unter WinCE deren Leistung ja begrenzter ist.
Aber wie bereits gesagt er wertet es weder mit Offen: Noch mit Öffnungszeiten: aus.
Ich habe keine Ahnung was ich da im Makro ändern müsste das er es macht.
Ich habe dir in der Spalte Q alles was Telefon betrifft in ROT, Offen: bzw. Öffungszeiten: in BLAU, für Probleme mit der Auswertung Strasse in HELL BLAU und 0 EUR in GRÜN markiert um es schneller zu finden.
Ja und wenn z.B. bei den Orts oder Straßennamen ein – od. / od. Zahl enthalten ist, stimmt auch die Auswertung nicht.
Ich hoffe du bist mir nicht böse, denn das dürfte für dich nun in etwas Arbeit ausarten.
Kann die Datei nicht anhängen da zu Groß, wie wäre es doch möglich diese dir zukommen zu lassen?
https://www.herber.de/bbs/user/136767.zip
https://www.herber.de/bbs/user/136768.zip
https://www.herber.de/bbs/user/136769.zip
https://www.herber.de/bbs/user/136770.zip
Bitte bei "MUSTER_02.z01.zip" bis "MUSTER_02.z03.zip" das ".zip" entfernen, hätte sie sonst nicht hochladen können.
Gruß Siegfried
AW: 6 Position eines Zeichen im Text auslese
16.04.2020 07:37:12
CitizenX
Guten Morgen Siegfried,
Perfekt, ich denke damit kann ich arbeiten.
Gib mir etwas Zeit,ich schätze das ich morgen Vormittag dazu komme.
VG
Steffen
AW: 6 Position eines Zeichen im Text auslese
16.04.2020 09:35:49
Siegfried
Hallo Steffen,
habe es eben hochgeladen, bei meinen hättest du nur bei den (Bitte bei "MUSTER_02.z01.zip" bis "MUSTER_02.z03.zip" das ".zip" entfernen, hätte sie sonst nicht hochladen können.) das *.zip entfernen müssen, denn mit der Endung *.zo1 usw. konnte ich es nicht hochladen.
Muss jetzt zur nächsten Infusion, melde mich dan später wieder.
Gruß Siegfried
AW: 6 Position eines Zeichen im Text auslese
16.04.2020 09:46:38
Daniel
Hi Siegfried
Auch wenn du dich jetzt vielleicht für den Weg von Steffen entschieden hast, wäre es nett von dir, wenn du mir kurz Rückmeldung zu meinen Antworten geben könntest, da ich doch relativ viel Zeit aufgewendet habe, dir nicht nur den noch vorhandenen Fehler aufzuzeigen, sondern dir auch noch die Funktionsweise der Auswertung mit Aggregat erklärt habe.
Feedback und ein Dankeschön sind hier im Forum der Lohn für die geleistete Arbeit, und wenn man das nicht gibt, ist man im Prinzip ein Zechpreller.
Gruß Daniel
AW: 6 Position eines Zeichen im Text auslese
16.04.2020 12:15:43
Siegfried
Nein lieber Daniel,
auch du bist noch im Rennen, nur hatte ich inzwischen wieder eine Infusion und daher noch nicht Zeit dir zu Antworten.
Den von dir aufgezeigten FEHLER von mir in der letzten Antwort hatte ich auch gefunden und dann entfernt, ging aber trotzdem nicht muss es mir aber nochmals ansehen, melde mich später wieder.
Gruß Siegfried
AW: 6 Position eines Zeichen im Text auslese
16.04.2020 13:18:37
Daniel
Hi
Also bei mir gings nachdem ich den zweiten Formelteil entfernt hatte.
Worauf du achten musst:
Wenn du nachträglich Zeilen löschst wie hier für dein Beispieldatei, dann verändert sich auch das Zeile(Z1:Z300) und wird zu sowas wie Zeile(Z1:Z48).
Dann kann es passieren, dass die Formel nicht mehr richtig funktioniert.
Die Zeilennummer sollte der Länge des längsten Textes entsprechen.
Was immer du hast, Gute Besserung
Daniel
AW: 6 Position eines Zeichen im Text auslese
16.04.2020 20:48:22
Siegfried
Hallo Daniel,
Frage mich bitte nicht warum es bei den vorhergehenden Versuchen bei mir nicht funktionierte.
Jetzt geht es jedenfalls, war natürlich noch eine kleine Spielerei da bei manchen Datensätzen als nächstes Zeichen kein ";" mehr vorhanden war sonder das "[" als Suchergebnis folgte.
Nun mit viel hin und her testen ist es mir nun anscheinend doch noch gelungen.
Aber bitte schaue noch einmal drüber,
Jedenfalls DANKE für deine Unterstützung hoffe ich merke mir das alles, auf jeden Fall gefällt mir auch deine Auswertungsart sehr gut.
Die von Steffen ist ja auch nicht schlecht, mit ein Paar Tausend Datensätzen braucht er zwar schon einige Zeit bis er alles durchgerechnet hat und ob ich jemals die Regex begreifen/Beherrschen werde bezweifle ich mit 76 Jahren.
Noch ein Wort zu meinen Infusionen, bekomme ich da ich momentan mit meinen Bandscheiben und Füssen große Probleme habe, hatte vor 40 Jahren bereits eine Bandscheiben OP und mit zunehmendem Alter wird es leider immer blöder.
https://www.herber.de/bbs/user/136795.xlsx
Gruß Siegfried
AW: 6 Position eines Zeichen im Text auslese
17.04.2020 08:21:56
CitizenX
Guten Morgen Siegfried,
Bitte das script ersetzen:
Option Explicit
Function getstring(text, Optional Titel)
Dim strpattern$
Select Case LCase(Titel)
Case "name": strpattern = "\]\s*([A-zöäüß\s\W?]+)\s*;"
Case "plz_ort": strpattern = "\[([A-zöäüß\s*\W?]+)\]$"
Case "strasse": strpattern = ";\s*([A-zöäüß\s\.\-]+\d*\s*)\["
Case "tel": strpattern = "[\sA-z\.\:]*(\+*\d*[\-\/\(\s]*\d+[\-\/\)\s\d]*\d{2,}[\d\s\-\/] _
*\d+[\sA-z\.\:]*[\sA-z\.\:]*\+*\d*[\-\/\(\s]*\d*[\-\/\)\s\d]*\d{2,}[\d\s\-\/]*\d*)" '";[\sA-z\.\:]*(\+*\d*[\-\/\(\s]*\d+[\-\/\)\s]*\d{2,}[\d\s\-\/]*\d+)"
Case "mail": strpattern = "\b([^\s]+@[^\s]+\.\w+)\b"
Case "preis": strpattern = "(\d+\.\d\d\s*EUR.*?);"
Case "offen": strpattern = "((offen|(ge)?öff.*|open)\:.*?)[;\[\b]"
End Select
With CreateObject("vbscript.regexp")
.ignorecase = True
.Pattern = strpattern
If .test(text) Then getstring = .Execute(text).Item(0).submatches(0)
End With
End Function
jetzt hab ich zwar für die Tonne gearbeitet,abei seit drum..
Alles Gute
VG
Steffen
AW: 6 Position eines Zeichen im Text auslese
17.04.2020 09:56:45
Siegfried
Morgen Steffen,
glaube mir du hast nicht für die Tonne gearbeitet, ich versuche ja mit Eurer Hilfe was dazu zu lernen.
Könntest du Bitte das script nochmals prüfen, hat in der case "tel": sofort bein ersetzten alles in ROT angezeigt un läuft daher auch nicht.
Schau für mich ist das nun eventuell die Chance durch vergleichen des ersten script mit dem zweiten Regex vielleicht doch zu begreifen.
Userbild
Gruß Siegfried
AW: 6 Position eines Zeichen im Text auslese
17.04.2020 10:17:29
CitizenX
Hallo Siegfried,
die Forensoftware hat ein Zeilenumbruch hinzugefügter muss raus:
Case "tel": strpattern = "[\sA-z\.\:]*(\+*\d*[\-\/\(\s]*\d+[\-\/\)\s\d]*\d{2,}[\d\s\-\/]*\d+[\sA-z\.\:]*[\sA-z\.\:]*\+*\d*[\-\/\(\s]*\d*[\-\/\)\s\d]*\d{2,}[\d\s\-\/]*\d*)"
VG
Steffen
AW: 6 Position eines Zeichen im Text auslese
17.04.2020 14:01:55
Siegfried
DANKE Steffen, FEHLER ist weg, ja manchmal spurt auch die Forensoftware nicht so wie sie sollte.
Aber im script case "name": werden alle die im zutreffenden Bereich für Namen eine Zahl enthalten nicht ausgewertet.
Dachte ich könnte es vielleicht selbst beheben, nein da fehlt mir der Plan dazu.
Bitte schaue noch mal drüber da doch sehr viel sind welche auf irgendeine Art eine Zahl enthalten, wie
Gästepension Sport 71;
Stellplatz beim Schnitzlwirt und A1 Motel;
A1-Stellplatz Rosslwirt;
Route 69 Gödl; usw.
Gruß Siegfried
AW: 6 Position eines Zeichen im Text auslese
17.04.2020 16:11:57
CitizenX
Hallo Siegfried,

Case "name": strpattern = "\]([A-zöäüß\s\-\/\d\+\*\~\'\#\_\,\:]+)[;\[\$]"
Case "plz_ort": strpattern = "\[([A-zöäüß\s\W]+\d*)\]$"
Case "strasse": strpattern = ";\s*([A-zöäüß\s\.\-\\\/\d]+)\["
Case "tel": strpattern = "[\sA-z\.\:]*(\+*\d*[\-\/\(\s]*\d+[\-\/\)\s\d]*\d{2,}[\d\s\-\/] _
*\d+[\sA-z\.\:]*[\sA-z\.\:]*\+*\d*[\-\/\(\s]*\d*[\-\/\)\s\d]*\d{2,}[\d\s\-\/]*\d*)"
Case "mail": strpattern = "\b([^\s]+@[^\s]+\.\w+)\b"
Case "preis": strpattern = "(\d+\.\d\d\s*EUR.*?);"
Case "offen": strpattern = "((offen|(ge)?öff.*|open)\:.*?)[;\[\b]"
Bitte Alle ersetzen.
VG
Steffen
AW: 6 Position eines Zeichen im Text auslese
19.04.2020 13:00:21
Siegfried
Hallo Steffen,
habe meine letzte Ausgabe „Muster_03.xlsm“ versucht auf den alten LINK hochzuladen.
Habe nun einige Probleme noch und zwar:
Wäre es möglich das Script dahingehend abzuändern, dass wenn strpattern keinen Wert enthält nicht eine 0 sondern ein Leerstring zurück gegeben wird.
Grund: um die letzten Werte aus den Daten herauszuholen, wollte ich mit WECHSELN alle schon herausgeholten Werte aus dem Hauptstring (Spalte Q) entfernen so dass alles was noch nicht ausgelesen wurde dann übrig bleibt.
Nun war die Fehlerquote derart groß, da aus jeder Spalte in welcher eine 0 zurückgegeben wurde diese 0 bei anderen Werten entfernt wurde und somit z.B. bei den TelNr. nur mehr Teile übrig waren und die Reste der Nummern dann mit ausgewertet wurden.
Habe daher in den Spalten K, M, N, O die Abfrage durch

=WENN(getstring($Q7;K$1)>0;getstring($Q7;K$1);"")
ersetzt, dadurch waren diese Fehler weg aber ich glaube durch diese 2x Abfrage des getstring wird das ganze ziemlich belastet.
In der Spalte K (Tel) sind in 5 Fällen die Werte (hellblaue Markierung) von der Zuordnung Name eingetragen, da diese auch Zahlen enthalten, kann nicht sagen wie ich das weg bringe.
Spalte R – Auswertung der restlichen Daten mit WECHSELN ist leider auch nicht 100% da z.B. Ortsnamen welche in H und I enthalten sind nach erstmaliger Entfernung das 2x unter den Restwerten stehen bleiben, habe ich zum Großteil mit GELB markiert.
WECHSELN ist also hier wohl nicht die Lösung da die dann erforderliche Nacharbeit sehr intensive wäre, Wüsstest du da eine bessere und andere Lösung.
OK man könnte nun die Abfragespalten um den Anteil der vorkommenden Begriffe erweitern, leider ist die Bezeichnung und Schreibweise nicht in allen Ländern gleich, im Endprodukt könnte man sie ja dann mit VERKETTEN wieder alles zusammen holen.
Aber vielleicht kennst du eine bessere und schneller Lösung.
Gruß Siegfried
AW: 6 Position eines Zeichen im Text auslese
19.04.2020 17:13:03
CitizenX
Hallo Siegfried,
die Null bekommst du mit :
Function getstring(text, Optional Titel)
Dim strpattern$
getstring = ""

weg,einfach am Anfang des Scriptes den Ausgabewert festlegen wenn nichts "gefunden" wurde.
Den Rest schaue ich mir später an...
Bis dahin
VG
Steffen

224 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige