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

Zahlen erkennen

Zahlen erkennen
13.10.2005 10:57:22
Peter
Hallo,
ich bekomme aus SAP folgende Werte in eine Zelle E kopiert (s. Bsp),
wie kann man sich in der Zelle Q nur die 10 stellige Zahl anzeigen lassen, die mit 9 beginnt?
Danke
Peter
SYN 830 STA 078,00 * 07,60 MO 9502393910
008 KV1 102,00 * 3,00 MO 9006065900 049
008 KV1 125,00 * 3,00 MO(9008605850) 050
008 128,00 * 3,00 MO(9008185850) 054
026 104,00 * 2,50 MO(9008293205) 040
008 KV1 MO(9008605850) 050
KV1 081,00 * 1,75 MO(9052064750) 014

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahlen erkennen
13.10.2005 11:09:46
MichaV
Hallo Peter,
steht da auch immer das MO zwei Stellen davor? Dann wäre eine Lösung
Tabelle1
 AB
1SYN 830 STA 078,00 * 07,60 MO 95023939109502393910
2008 KV1 125,00 * 3,00 MO(9008605850) 0509008605850
Formeln der Tabelle
B1 : =TEIL(A1;FINDEN("MO";A1)+3;10)
B2 : =TEIL(A2;FINDEN("MO";A2)+3;10)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Wenn das MO unsicher ist, dann mach die Frage wieder auf.
Gruss- Micha
Anzeige
AW: Zahlen erkennen
13.10.2005 11:14:01
Peter
Hallo Micha,
es geht nur um die 10stellige Zahl, da MO und die Klammern müssen nicht vorkommen.
Danke für Deine Hilfe
Peter
AW: Zahlen erkennen
13.10.2005 11:18:40
Nepumuk
Hi,
eine Möglichkeit per VBA:
Public Sub test4()
    Dim objRegex As Object, objMatch As Object
    Set objRegex = CreateObject("vbscript.regexp")
    objRegex.Global = True
    objRegex.Pattern = "\9\d\d\d\d\d\d\d\d\d"
    objRegex.IgnoreCase = True
    Set objMatch = objRegex.Execute("SYN 830 STA 078,00 * 07,60 MO 9502393910")
    If objMatch.Count = 1 Then Debug.Print objMatch(0)
    Set objRegex = Nothing
    Set objMatch = Nothing
End Sub

Gruß
Nepumuk

Anzeige
AW: Zahlen erkennen
13.10.2005 12:37:04
bst
Hi Nepumuk,
jetzt auch in Sachen regexp unterwegs ?
oder auch so:
objRegex.Pattern = "9\d{9}"
cu, Bernd
AW: Zahlen erkennen
13.10.2005 12:38:53
Nepumuk
Hallo Bernd,
first steps :-)
Gruß
Nepumuk
Noch ne VBA Lösung
13.10.2005 11:35:12
Heiko
Hallo Peter,
mit Formeln kenn ich mich nicht so aus aber mit VBA geht es.
Die Funktion in ein allgemeines Modul der Tabelle kopieren und dann einfach in den Zellen
aufrufen. Also wenn Die Textfolge in A1 steht, Formel in B1 =NeunerSuchen(A1).
Diese Formel kannst du dann auch ganz einfach für die ganze Spalte "runterziehen"
Function NeunerFinden(Zelle As Range) As String Dim intPosition As Integer, intStart As Integer Dim strHelp As String intStart = 1 Do intPosition = InStr(intStart, Zelle.Text, "9") If intPosition = 0 Then Exit Function If Len(Zelle.Text) - intPosition >= 9 Then strHelp = Mid(Zelle.Text, intPosition, 10) If IsNumeric(strHelp) Then NeunerFinden = CStr(strHelp) Exit Function End If intStart = intPosition + 1 Else Exit Function End If Loop End Function
Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Noch ne VBA Lösung
13.10.2005 12:29:58
Peter
Hallo Heiko,
leider bringt excel mir nur das Ergebnis #NAME?
Die Textdaten stehen in E6 abwärts, habe also die Zelle Q6 in =NeunerSuchen(E6) geändert.
In diesem Falle stehen diese Werte in der Spalte E
008 STA 125,00 * 3,00 MO(9054591500) 083
001 STA 089,00 * 1,20 MKB 9055353910-101
001 STA 086,00 * 1,20 MKB 9055444910 101
001 STA 089,00 * 1,20 MKB 9055353910-101
008 STA 097,50 * 2,50 MO(9008093060) 035
Gruß
Peter
AW: Noch ne VBA Lösung
13.10.2005 12:37:04
Heiko
Hallo Peter,
Fehler von mir die Funktion heißt ja NeuerFinden also die Formel so:
NeunerFinden(A1) dann sollte es gehen.
Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Noch ne VBA Lösung
13.10.2005 12:37:07
Nepumuk
Hi,
versuch es mal so:
 
 EF
1008 STA 125,00 * 3,00 MO(9054591500) 0839054591500
2001 STA 089,00 * 1,20 MKB 9055353910-1019055353910
3001 STA 086,00 * 1,20 MKB 9055444910 1019055444910
4001 STA 089,00 * 1,20 MKB 9055353910-1019055353910
5008 STA 097,50 * 2,50 MO(9008093060) 0359008093060
Formeln der Tabelle
F1 : =Neuner(E1)
F2 : =Neuner(E2)
F3 : =Neuner(E3)
F4 : =Neuner(E4)
F5 : =Neuner(E5)
 

Public Function Neuner(objCell As Range) As String
    Dim objRegex As Object, objMatch As Object
    Set objRegex = CreateObject("vbscript.regexp")
    objRegex.Global = True
    objRegex.Pattern = "\9\d\d\d\d\d\d\d\d\d"
    objRegex.IgnoreCase = True
    Set objMatch = objRegex.Execute(objCell.Text)
    If objMatch.Count = 1 Then Neuner = objMatch(0)
    Set objRegex = Nothing
    Set objMatch = Nothing
End Function

Gruß
Nepumuk

Anzeige
und nun ohne VBA
13.10.2005 11:40:49
MichaV
Hallo,
das letzte Vorkommen einer 10- Stelligen Zahl, die mit 9 anfängt:
Tabelle1
 AB
1SYN 830 STA 078,00 * 07,60 MO 95023939109502393910
2008 KV1 102,00 * 3,00 MO 9006065900 0499006065900
3008 KV1 125,00 * 3,00 MO(9008605850) 0509008605850
4008 128,00 * 3,00 MO(9008185850) 0549008185850
5026 104,00 * 2,50 MO(9008293205) 0409008293205
6008 KV1 MO(9008605850) 0509008605850
7KV1 081,00 * 1,75 MO(9052064750) 0149052064750
Formeln der Tabelle
B1 : {=TEIL(A1;MAX(WENN(ISTFEHLER(TEIL(A1;ZEILE(INDIREKT("a1:a"&LÄNGE(A1)-9));10)*1)+(LINKS(TEIL(A1;ZEILE(INDIREKT("a1:a"&LÄNGE(A1)-9));10))<>"9");0;ZEILE(INDIREKT("a1:a"&LÄNGE(A1)-9))));10)}
B2 : {=TEIL(A2;MAX(WENN(ISTFEHLER(TEIL(A2;ZEILE(INDIREKT("a1:a"&LÄNGE(A2)-9));10)*1)+(LINKS(TEIL(A2;ZEILE(INDIREKT("a1:a"&LÄNGE(A2)-9));10))<>"9");0;ZEILE(INDIREKT("a1:a"&LÄNGE(A2)-9))));10)}
B3 : {=TEIL(A3;MAX(WENN(ISTFEHLER(TEIL(A3;ZEILE(INDIREKT("a1:a"&LÄNGE(A3)-9));10)*1)+(LINKS(TEIL(A3;ZEILE(INDIREKT("a1:a"&LÄNGE(A3)-9));10))<>"9");0;ZEILE(INDIREKT("a1:a"&LÄNGE(A3)-9))));10)}
B4 : {=TEIL(A4;MAX(WENN(ISTFEHLER(TEIL(A4;ZEILE(INDIREKT("a1:a"&LÄNGE(A4)-9));10)*1)+(LINKS(TEIL(A4;ZEILE(INDIREKT("a1:a"&LÄNGE(A4)-9));10))<>"9");0;ZEILE(INDIREKT("a1:a"&LÄNGE(A4)-9))));10)}
B5 : {=TEIL(A5;MAX(WENN(ISTFEHLER(TEIL(A5;ZEILE(INDIREKT("a1:a"&LÄNGE(A5)-9));10)*1)+(LINKS(TEIL(A5;ZEILE(INDIREKT("a1:a"&LÄNGE(A5)-9));10))<>"9");0;ZEILE(INDIREKT("a1:a"&LÄNGE(A5)-9))));10)}
B6 : {=TEIL(A6;MAX(WENN(ISTFEHLER(TEIL(A6;ZEILE(INDIREKT("a1:a"&LÄNGE(A6)-9));10)*1)+(LINKS(TEIL(A6;ZEILE(INDIREKT("a1:a"&LÄNGE(A6)-9));10))<>"9");0;ZEILE(INDIREKT("a1:a"&LÄNGE(A6)-9))));10)}
B7 : {=TEIL(A7;MAX(WENN(ISTFEHLER(TEIL(A7;ZEILE(INDIREKT("a1:a"&LÄNGE(A7)-9));10)*1)+(LINKS(TEIL(A7;ZEILE(INDIREKT("a1:a"&LÄNGE(A7)-9));10))<>"9");0;ZEILE(INDIREKT("a1:a"&LÄNGE(A7)-9))));10)}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Gruss- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: und nun ohne VBA
13.10.2005 11:54:32
Heiko
Hallo Micha,
Wenn die Zahl nicht vorkommt gibt es bei mir ne #Wert! Fehlermeldung.
Kann man da auch noch was machen.
Ansonsten geben deine Formel und meine UDF schon mal das gleiche aus.
Gruß Heiko
AW: und nun ohne VBA
13.10.2005 12:49:04
MichaV
Hallo,
Fehlerbehandlung ist garnicht so einfach, weil die maximale Verschachtelungstiefe erreicht war. Also nehm ich eine Bedingung raus und lasse die Formel 100x berechnen- nun unabhängig von der Länge des Strings. Das macht die Formel zwar nicht mher so "perfomant", aber dafür lässt sich eine Abfrage einbauen.
Außerdem hier noch ein bissel flexibler, erste Ziffer und Länge der Zahl können variabel vorgegeben werden:
Tabelle1
 ABC
1 Beginn mit:5
2  Anzahl Stellen:4
3 schnellermit Fehlerbehandlung
4SYN 830 STA 078,00 * 07,60 MO 9502393920 95023939150235023
5026 104,00 * 2,50 MO(9008293205) 040#WERT!nix gefunden
Formeln der Tabelle
B4 : {=TEIL(A4;MAX(WENN(ISTFEHLER(TEIL(A4;ZEILE(INDIREKT("a1:a"&LÄNGE(A4)-$C$2+1));$C$2)*1)+(LINKS(TEIL(A4;ZEILE(INDIREKT("a1:a"&LÄNGE(A4)-$C$2+1));$C$2))<>TEXT($C$1;"@"));0;ZEILE(INDIREKT("a1:a"&LÄNGE(A4)-$C$2+1))));$C$2)}
C4 : {=WENN(MAX(WENN(ISTFEHLER(TEIL(A4;ZEILE($A$1:$A$92);$C$2)*1)+(LINKS(TEIL(A4;ZEILE($A$1:$A$92);$C$2))<>TEXT($C$1;"@"))+(LÄNGE(TEIL(A4;ZEILE($A$1:$A$92);$C$2))<>$C$2);0;ZEILE($A$1:$A$92)));TEIL(A4;MAX(WENN(ISTFEHLER(TEIL(A4;ZEILE($A$1:$A$92);$C$2)*1)+(LINKS(TEIL(A4;ZEILE($A$1:$A$92);$C$2))<>TEXT($C$1;"@"))+(LÄNGE(TEIL(A4;ZEILE($A$1:$A$92);$C$2))<>$C$2);0;ZEILE($A$1:$A$92)));$C$2);"nix gefunden")}
B5 : {=TEIL(A5;MAX(WENN(ISTFEHLER(TEIL(A5;ZEILE(INDIREKT("a1:a"&LÄNGE(A5)-$C$2+1));$C$2)*1)+(LINKS(TEIL(A5;ZEILE(INDIREKT("a1:a"&LÄNGE(A5)-$C$2+1));$C$2))<>TEXT($C$1;"@"));0;ZEILE(INDIREKT("a1:a"&LÄNGE(A5)-$C$2+1))));$C$2)}
C5 : {=WENN(MAX(WENN(ISTFEHLER(TEIL(A5;ZEILE($A$1:$A$92);$C$2)*1)+(LINKS(TEIL(A5;ZEILE($A$1:$A$92);$C$2))<>TEXT($C$1;"@"))+(LÄNGE(TEIL(A5;ZEILE($A$1:$A$92);$C$2))<>$C$2);0;ZEILE($A$1:$A$92)));TEIL(A5;MAX(WENN(ISTFEHLER(TEIL(A5;ZEILE($A$1:$A$92);$C$2)*1)+(LINKS(TEIL(A5;ZEILE($A$1:$A$92);$C$2))<>TEXT($C$1;"@"))+(LÄNGE(TEIL(A5;ZEILE($A$1:$A$92);$C$2))<>$C$2);0;ZEILE($A$1:$A$92)));$C$2);"nix gefunden")}
Enthält Matrixformel:
Umrandende
{ } nicht miteingeben,
sondern Formel mit STRG+SHIFT+RETURN abschließen!
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Gruss- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: und nun ohne VBA
13.10.2005 15:22:10
Heiko
Hallo Micha,
Respekt, wie kommt man nur auf solche Formelmonster. Ich bleib da lieber bei VBA da blick ich besser durch.
Gruß Heiko
AW: und nun ohne VBA
13.10.2005 16:02:12
MichaV
Hallo Heiko,
ich wusste im März noch nicht, daß es Matrixformeln überhaupt gibt. Und ich warte noch auf die Matrixler, die mir diese Formel auf 30% der Ursprungslänge zusammenstampfen ;o)
Ansonsten hast Du doch 254 Hilfsspalten zur Verfügung, um solche Formeln zu entwickeln.
Gruß- Micha
Danke an alle
13.10.2005 13:01:43
Peter
nochmals Danke an Alle.
Ich werden das von Heiko nehmen, ist für mich das komfortabelste.
Gruß
Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige