Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
608to612
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
608to612
608to612
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Betrag extrahieren

Betrag extrahieren
06.05.2005 10:00:09
Russi
Hallo Zusammen,
kurz folgendes Problem:
Ich habe in einem String (Import von Kontoauszügen) relativ oft folgendes Problem: PLZ34567 Betr. 237,80234567-1Z45634564
Der Betrag ist 237,80, dahinter kommen meist noch zusätzliche Informationen, die aber in ihrer Länge variabel sind. Die Banken kriegen kein vernünftiges Exportformat hin bzw. liefern die Paketdienste schon uneinheitlichen Mist.
Jetzt habe ich schon einigen Gehirnschmalz dazu verwendet, PLZ, Betr., etc. zu eliminieren, so dass nur noch der Betrag dasteht. Wie kann ich Excel aber per makro sagen, dass er zwei Stellen nach dem Betragskomma, egal was dann kommt, ein ";" setzen soll?
Für Lösungsvorschläge bin ich sehr dankbar...
Andreas

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Betrag extrahieren
06.05.2005 10:09:40
Hajo_Zi
Hallo Andreas,
Tabelle2
 ABC
7PLZ34567 Betr. 237,80234567-1Z4563456434567237,80
8PLZ34567 Betr. 0,80234567-1Z45634565345670,80
9PLZ34567 Betr. 12.237,80234567-1Z456345663456712.237,80
Formeln der Tabelle
B7 : =WENN(ISTFEHLER(FINDEN("PLZ";A7));"";TEIL(A7;FINDEN("PLZ";A7)+3;5))
C7 : =WENN(ISTFEHLER(FINDEN("Betr.";A7));"";TEIL(A7;FINDEN("Betr.";A7)+6;FINDEN(",";A7)-FINDEN("Betr.";A7)-3))
B8 : =WENN(ISTFEHLER(FINDEN("PLZ";A8));"";TEIL(A8;FINDEN("PLZ";A8)+3;5))
C8 : =WENN(ISTFEHLER(TEIL(A8;FINDEN("Betr.";A8)+6;FINDEN(",";A8)-FINDEN("Betr.";A8)-3));"";TEIL(A8;FINDEN("Betr.";A8)+6;FINDEN(",";A8)-FINDEN("Betr.";A8)-3))
B9 : =WENN(ISTFEHLER(FINDEN("PLZ";A9));"";TEIL(A9;FINDEN("PLZ";A9)+3;5))
C9 : =WENN(ISTFEHLER(TEIL(A9;FINDEN("Betr.";A9)+6;FINDEN(",";A9)-FINDEN("Betr.";A9)-3));"";TEIL(A9;FINDEN("Betr.";A9)+6;FINDEN(",";A9)-FINDEN("Betr.";A9)-3))
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.



"Wer Rechtschreibfehler findet, darf sie behalten!"
Dies gilt auch für Bert.
Anzeige
AW: Betrag extrahieren
06.05.2005 10:13:11
Russi
Hallo Hajo,
vielen Dank für die Info...! Wie baue ich das in ein Modul ein, welches vorab schon diverse Punkte bereinigt? Hast Du hierfür auch einen VBA-Ansatz. Speziell für Spalte C.
Ciao
Andreas
AW: Betrag extrahieren
06.05.2005 10:15:33
ransi
hallo russi
als ansatz weil nicht auf alle eventualitäten gestestet.
Option Explicit
'PLZ34567 Betr. 237,80234567-1Z45634564
Public Sub t() Dim s As String Dim neu As String s = "PLZ34567 Betr. 237,80234567-1Z45634564" neu = Left(s, InStr(1, s, ",") + 2) & ";" & Mid(s, InStr(1, s, ",") + 3) MsgBox neu End Sub
ransi
AW: Betrag extrahieren
06.05.2005 11:28:39
Russi
Hallo Ransi,
der Ansatz ist gut und funktioniert. Leider ist es ab und zu so, dass in einem String mehrere Beträge nach diesem Muster vorkommen können. Wie erweitere ich Deinen Vorschlag dahingehend, dass er alle Beträge in einem String (bis zu sechs Stück) derart trennt.
Danke
Andreas
Anzeige
AW: Betrag extrahieren
06.05.2005 13:28:24
Reinhard
Hallo russi,
bastle mal so einen BeispielString und auch die 6 Ergebnisse, wie sehen die aus (; ?), wo sollen die stehen...
Gruß
Reinhard
AW: Betrag extrahieren
06.05.2005 14:12:12
Russi
Hallo Reinhard,
anbei ein paar Beispiele für vorkommende Strings
String1:
AN 112654PLZ 04229 BETR. 48,37AN 112639PLZ 44651 BETR. 104,05AN 112641PLZ 44651 BETR. 104,05AN 112642PLZ 44651 BETR. 104,050AUFTRAG-NR. 112628PLZ . 0 BETR. 35,73264998PLZ 65197 BETR. 171,96
String2:
AN 267848PLZ 99086 BETR.106,49 1Z69367Y7746603622PLZ 0 BETR. 208,87
String3:
AN 267310PLZ 06020 BETR. 179,80AN 267420PLZ 06850 BETR. 219,80267640-1Z75557Y7746174585PLZ 0 BETR. 220,17268557-1Z75557Y7746175100PLZ 0 BETR. 490,41AN 267459PLZ 72070 BETR. 173,770AUFTRAG-NR. 267938PLZ 0 BETR. 212,05
String4:
0AUFTRAG-NR. 267985PLZ . 0 BETR. 138,970AUFTRAG-NR. 268599PLZ. 0 BETR. 115,770AUFTRAG-NR. 268910PLZ . 0 BETR. 195,810AUFTRAG-NR. 268263PLZ . 0 BETR. 57,77267783-1Z69573Y7746243299PLZ . 0 BETR. 80,970AUFTRAG-NR. 268000PLZ
Am Ende brauche ich aus jedem String nur die Auftragsnummer (6-stellig, meist mit AN davor) und den Betrag. Falls bei der sechsten Auftragsnummer der Betrag fehlt, meist wg. Zeichenbegrenzung auf dem digitalen Bankauszug, ziehe ich mir den Betrag zur zugehörigen Kundennummer aus der Datenbank und vgl. dann mit Kontoauszug...
Die Anzahl an vorkommenden Buchungen (=Anzahl Auftragsnummern und dazugehörige Beträge) wird aus dem String heraus in Zeilen aufgebrochen, d.h. sechs Vorgänge ergeben jeweils eine Zeile, d.h. String prüfen, x Zeilen einfügen, füllen, dann nächster String...
Vielen Dank für Deine Hilfe...
Andreas
Anzeige
AW: Betrag extrahieren
06.05.2005 14:16:02
Russi
Hier das Ergebnis...
AU-Nr. Betrag
267934 266,57
267688 266,57
267674 266,57
268629 220,17
267791 162,17
267797 220
Falls keine Auftragsnummer vorhanden, darf eine Trackingnummer in Form von "1Z*" stehen...
AW: Betrag extrahieren
06.05.2005 10:23:07
Ramses
Hallo
Noch ne Variante :-)
Sub Extract_Price() Dim chkStr As String, extStr As String Dim extResult As String Dim x As Byte, y As Byte extStr = "Betr. " chkStr = "PLZ34567 Betr. 237,80234567-1Z45634564" x = InStr(1, chkStr, extStr) y = InStr(1, chkStr, ",") MsgBox Mid(chkStr, x + Len(extStr), y - (x + Len(extStr)) + 3) End Sub
Gruss Rainer
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige