Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1096to1100
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

Sechsstellige Zahl aus Zelle mit Text ziehen

Sechsstellige Zahl aus Zelle mit Text ziehen
Martin
Hallo
In den Zellen in Spalte C stehen Wörter und Zahlen. Ich möchte gerne alle sechsstelligen (es gibt auch andere) Zahlen herausziehen und in Spalte D eintragen. Es gibt auch Zellen, die mehrere sechsstellige Zahlen beinhalten, da bräuchte ich auch jede davon in Spalte D, getrennt mit Leerzeichen oder Komma.
Besten Dank im voraus für die Hilfe!
Martin

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Alles sechsstellige Zahlen auflisten
26.08.2009 13:28:23
NoNet
Hallo Martin,
gib folgende Funktion in D2 ein und bestätige die Eingabe mit Strg+shift+ENTER und kopiere sie dann nach unten :
=WENN(ZEILE()-1<=SUMMENPRODUKT((ISTZAHL($C$2:$C$19)*(LÄNGE($C$2:$C$19)=6)));INDEX(C:C;KKLEINSTE(WENN(ISTZAHL($C$2:$C$19)*(LÄNGE($C$2:$C$19)=6);ZEILE($C$2:$C$19));ZEILE()-1));"")
Ergebnis-Beispiel :
CD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Gruß, NoNet
Anzeige
AW: Alles sechsstellige Zahlen auflisten
26.08.2009 13:37:46
Martin
Besten Dank für die Antwort.
Ich habe mich schlecht ausgedrückt:
Die Zellen in Spalte C beinhalten Worte und Zahlen, wie z.B.
"gestaffelte Garantie über 2000 gestellt durch XX 105314"
oder
"Kunden-Nr 101456 und Kunden-Nr 101457"
(es gibt auch längere Texte)
Hier sollte das Resultat in Spalte D wie folgte sein:
105314
101456 101457
Vielen Dank
AW: Alles sechsstellige Zahlen auflisten
26.08.2009 14:33:53
fcs
Hallo Martin,
das geht nach meiner Einschätzung mit Standardfunktionen nicht mehr. Das erfordert eine benutzerdefinierte Funktion.
Die nachfolgende Prozedur kopierst du im VBA-Editor in ein allgemeines Modul der Datei.
Anschließend kannst du die Funktion wie jede andere in Formeln der Datei benutzen.
Gruß
Franz

Formel-Beispiele:
=fncZiffernPaket(C3;6;",")      'Ziffernblöcke mit Komma als Trennzeichen
=fncZiffernPaket(C3)      'Ziffernblöcke mit Leerzeichen als Trennzeichen
Function fncZiffernPaket(Zelle As Range, _
Optional BlockLaenge As Long = 6, _
Optional strSep As String = " ") As String
'Sucht im Text der Zelle nach Ziffernblöcken der Länge Blocklaenge und fügt die _
Ziffern zu einem Textstring mit Trennzeichen zusammen
Dim lngPos, bolZahl As Boolean, Text As String
Text = Zelle.Text
'Prüfen, ob Text eine Zahl mit BlockLaenge ist
If IsNumeric(Text) And Len(Text) = BlockLaenge Then
fncZiffernPaket = Text
'Prüfen, ob Text eine Zahl mit Länge ungleich BlockLaenge ist
ElseIf IsNumeric(Text) And Len(Text)  BlockLaenge Then
fncZiffernPaket = ""
Else
'Prüfen, ob im Text eine(mehrere) Zahl(en) mit Länge ungleich BlockLaenge ist(sind)
For lngPos = 1 To Len(Text) - BlockLaenge - 1
bolZahl = False
'Prüfen, ob BlockLaenge Zeichen langer Abschnitt im Text eine Zahl ist
If IsNumeric(Mid(Text, lngPos, BlockLaenge)) Then
'Prüfen 7. Zeichen keine Zahl ist, wenn BlockLaenge Ziffern am Anfang
If lngPos = 1 And Not IsNumeric(Mid(Text, lngPos + BlockLaenge, 1)) Then
bolZahl = True
'Prüfen ob 7.-letztes Zeichen keine Zahl wenn BlockLaenge Ziffern am Ende
ElseIf Not IsNumeric(Mid(Text, lngPos - 1, 1)) _
And lngPos = Len(Text) - BlockLaenge - 1 Then
bolZahl = True
'Prüfen, ob Zeichen links und rechts des Blocks keine Ziffer
ElseIf Not IsNumeric(Mid(Text, lngPos - 1, 1)) _
And Not IsNumeric(Mid(Text, lngPos + BlockLaenge, 1)) Then
bolZahl = True
End If
'Wenn 6er-Ziffern-Block, dann zum Ergebnis hinzufügen
If bolZahl = True Then
If fncZiffernPaket = "" Then
fncZiffernPaket = Mid(Text, lngPos, BlockLaenge)
Else
fncZiffernPaket = fncZiffernPaket & strSep & Mid(Text, lngPos, BlockLaenge)
End If
lngPos = lngPos + BlockLaenge
End If
End If
Next
End If
End Function

Anzeige
AW: Alles sechsstellige Zahlen auflisten
26.08.2009 14:40:25
Martin
Hallo Franz
Besten Dank für den Code.
Sieht kompliziert aus, aber ich werde versuchen, mich mal da durch zu arbeiten, um alles zu verstehen (kopieren ist das einfach, aber ich möchte auch wissen, was da abgeht ;-)
Herzlichen Dank nochmals für deine Mühe.
Grüsse
Martin
Mit mehreren Zahlen wird's zu kompliziert !
26.08.2009 14:43:56
WF
Hi Martin,
kommt pro Text nur eine zusammenhängende Zahl vor 0 bis vielstellig, erhältst Du nur die 6-stellige mit folgenden Arrayformel:
in A1 steht Dein Text
in B1 steht:
{=WENN(ISTZAHL(VERGLEICH(WAHR;ISTZAHL(TEIL(A1;ZEILE(1:99);1)*1);0))+ISTFEHLER(TEIL(A1;VERGLEICH(WAHR; ISTZAHL(TEIL(A1;ZEILE(1:99);1)*1);0)+6;1)*1)+ISTZAHL(TEIL(A1;VERGLEICH(WAHR;ISTZAHL(TEIL(A1; ZEILE(1:99);1)*1);0)+5;1)*1)=3;TEIL(A1;VERGLEICH(WAHR;ISTZAHL(TEIL(A1;ZEILE(1:99);1)*1);0);6);"") }
Da jetzt noch zusätzliche Zahlen zu eliminieren bzw. dann auch mehrere 6-stellige zu Listen: VIEL VERGNÜGEN!
Salut WF
Anzeige
oder so
28.08.2009 21:27:05
FP
Hallo Walter,
und ohne {}
=TEXT(TEIL(LINKS(A1;VERWEIS(2;1/N(TEIL(A1;SPALTE(1:1);1)+1);SPALTE(1:1))); MIN(SUCHEN({0.1.2.3.4.5.6.7.8.9};A1&"0123456789"));99)+0;"[999999]"""";0")
oder mit {}
{=TEXT(RECHTS(LINKS(A1;VERWEIS(9;1/N(TEIL(A1;SPALTE(1:1);1)+1);SPALTE(1:1)));ANZAHL(TEIL(A1; SPALTE(1:1);1)+0))+0;"[999999]"""";0") }
Das funktioniert natürlich nur mit 1 Zahl im Text.
Servus aus dem Salzkammergut
Franz
AW: oder so
31.08.2009 17:25:42
Martin
Super Antworten!!
Besten Dank an alle für eure Hilfe.
Viele Grüsse
Martin

337 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige