Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: alle 6-stelligen Zahlen auflisten

alle 6-stelligen Zahlen auflisten
19.10.2005 14:18:21
TeiZei
Hallo liebe Excel-Tüftler,
ich hab mal wieder ein Problem:
ist es möglich aus einer Zelle in die
"056488 RS, 0421, Dokumente, 05699 056969" eingetragen wurde alle 6-stelligen Zahlen herauszufiltern und die vorhandenen 6-stelligen Zahlen je in eine eigene neue Zelle zu schreiben?
Vielen Dank,
TeiZei
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: alle 6-stelligen Zahlen auflisten
19.10.2005 14:39:23
MichaV
Hallo,
sind die Zahlen immer durch Leerzeichen vom restlichen Text getrennt?
Gruss- Micha
PS: Rückmeldung wäre nett.
AW: alle 6-stelligen Zahlen auflisten
19.10.2005 16:18:27
TeiZei
Hallo Micha,
das Problem ist, dass die Einträge nicht stetig sind; mal ist ein Leerzeichen, mal ein Komma und dann mal Text mit der 6-stelligen Zahl zusammen!!
Das macht das ganze wohl noch etwas schwieriger?!?!
LG,
TeiZei
Anzeige
AW: alle 6-stelligen Zahlen auflisten
19.10.2005 16:45:06
MichaV
Hallo,
auf jeden Fall macht es dann keinen großen Sinn, das ohne VBA zu versuchen.
Ich gebe an bst weiter und denk mal drüber nach, wie es elegant ohne VBA gehen könnte.
Gruß- Micha
AW: alle 6-stelligen Zahlen auflisten
19.10.2005 16:18:33
TeiZei
Hallo Micha,
das Problem ist, dass die Einträge nicht stetig sind; mal ist ein Leerzeichen, mal ein Komma und dann mal Text mit der 6-stelligen Zahl zusammen!!
Das macht das ganze wohl noch etwas schwieriger?!?!
LG,
TeiZei
Anzeige
AW: Frage!.....
19.10.2005 17:14:31
HermannZ
Hallo TeiZei;
kommen die sechsstelligen Zahlen wie in deinem Beispiel nur vorne und hinten, oder vorne, oder hinten oder wie genau?
am besten wäre es wenn du einmal auflisten würdest wie diese Zeilen denn genau aussehen können.Dann wäre eine Lösung vielleicht viel einfacher zu finden.
Gruß Hermann
Anzeige
AW: alle 6-stelligen Zahlen auflisten
19.10.2005 14:43:28
bst
Auch Hallo TeiZei,
darf's denn was mit VBA und Regular Expressions sein ?
cu, Bernd
AW: alle 6-stelligen Zahlen auflisten
19.10.2005 16:16:11
TeiZei
Hallo Bernd,
ja, natürlich auch gerne eine VBA-Lösung (könnte dann nur sein, dass ich evtl. etwas mehr Hilfe brauche)
LG,
TeiZei
AW: alle 6-stelligen Zahlen auflisten
19.10.2005 16:19:17
TeiZei
Hallo Bernd,
ja, natürlich auch gerne eine VBA-Lösung (könnte dann nur sein, dass ich evtl. etwas mehr Hilfe brauche)
LG,
TeiZei
Anzeige
AW: alle 6-stelligen Zahlen auflisten
20.10.2005 15:52:25
TeiZei
Hi Coach,
funkt super!!!
Tausend dank
TeiZei
AW: alle 6-stelligen Zahlen auflisten
19.10.2005 17:01:37
Coach
Hallo TeiZei,
ohne VBA ginge es so:
https://www.herber.de/bbs/user/27643.xls
Grüße
Coach
Anzeige
geile loesung, respekt ot.
19.10.2005 21:28:15
th.heinrich
dem kann ich mich nur anschließen owT
19.10.2005 21:59:23
MichaV
AW: alle 6-stelligen Zahlen auflisten
20.10.2005 08:47:53
bst
Morgen auch,
das ist ja eine ziemlich heftige Formel. Cool.
Hier noch - wie versprochen - eine denkbare VBA-Variante mit RE.
Die Routine rngRegexSplit splittet an Hand des übergebenen Patterns und schreibt das Resultat nach rechts. Gesplittet werden die Submatches das ist das was im Pattern in runden Klammern steht.
Z.B. kann man "AxBxCxD" so in A B C D zerlegen: "(A)x(B)x(C)x(D)"
Oder wenn denn "x" nur ein Zeichen sein sollte via: "([^x]+)" Sowie das Flag GlobalSplit auf True setzen.
Eine 6-stellige Zahl findet man leicht via "(\d{6})". Leider damit auch die mehr als 6-stelligen Freunde. Um diese auszuschließen braucht man dann halt sowas ähnliches:
"(?:^|\D)(\d{6})(?!\d)" wobei:
(?:^|\D) Anfang des Strings oder eine Nicht-Ziffer, dieses nicht als Submatch speichern. Dieses verkonsumiert u.U. ein nicht benötigtes Zeichen (die Nichtziffer \D), damit muß man halt IMHO leben ... Lookbehind's kennt VB-RE leider nicht :-(
(\d{6}) 6 Ziffern, als Submatch speichern
(?!\d) ein negativer Lookahead einer Ziffer, d.h. es darf keine Ziffer kommen, das Zeichen wird aber nicht zum Match dazugenommen.
RegExp is fun,
Bernd
--
Option Explicit

Sub TrennMich()
   With Range("B1:H10")
      .NumberFormat = "@"
      .Value = ""
   End With
   rngRegexSplit Range("A1:A10"), "(?:^|\D)(\d{6})(?!\d)", , True
End Sub

Sub rngRegexSplit(src As Range, pattern As String, _
   Optional IgnoreCase As Boolean = False, _
   Optional GlobalSplit As Boolean = False, _
   Optional SplitVert As Boolean = False)

   
   Dim cell As Range
   Dim i As Integer, j As Integer, k As Integer
   Dim re As Object, m As Object
   
   Set re = CreateObject("vbscript.regexp")
   re.pattern = pattern
   re.IgnoreCase = IgnoreCase
   re.Global = GlobalSplit
   're.MultiLine = MultiLine
   
   For Each cell In src
      Set m = re.Execute(cell.Value)
      k = 1
      For i = 0 To m.Count - 1
         For j = 0 To m(i).SubMatches.Count - 1
            If SplitVert Then
               cell.Offset(k, 0).Value = m(i).SubMatches(j)
            Else
               cell.Offset(0, k).Value = m(i).SubMatches(j)
            End If
            k = k + 1
         Next
      Next
      Set m = Nothing
   Next
   Set re = Nothing
End Sub

Anzeige
AW: alle 6-stelligen Zahlen auflisten
20.10.2005 16:10:48
TeiZei
Hi bernd,
komme leider mit deiner Lösung nicht wirklich klar (immer wenn ich die VBA-Variante starte um einen Datendsatz zu sortieren schluckt der Rechner Zahlen etc.)
Vielleicht kann ich aber auch nur nicht wirklich damit umgehen (kann man die zu sortierenden Argumente in jede Zelle des Datenblatts schreiben?!?)
Aber auch dir und allen Mitwirkenden
Tausend Dank für die Lösung dieses super schweren Problems
cu,
TeiZei
Anzeige
AW: alle 6-stelligen Zahlen auflisten
20.10.2005 23:00:05
bst
Abend TeiZei,
so wie ich's geschrieben habe wandelt es nur die Zellen A1:A10 und schreibt diese nach rechts.
Zuvor lösche ich den Bereich B1:H10 und formatiere ihn als Text.
Die Textformatierung brauchst Du hier eigentlich nicht wirklich. Ebensowenig das Löschen.
Ändere TrennMich einfach mal so ab, dann trennt er alle markierten Zellen.
D.h. selektiere zuerst die Zellen die Du trennen möchtest (sinnvollerweise sollten diese wohl
in einer Spalte stehen und rechts von ihnen sollte genug Platz sein) und starte dann das Makro.
Siehe Anhang. https://www.herber.de/bbs/user/27696.xls

Sub TrennMich()
rngRegexSplit Selection, "(?:^|\D)(\d{6})(?!\d)", , True
End Sub

cu, Bernd
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Alle 6-stelligen Zahlen auflisten


Schritt-für-Schritt-Anleitung

Um aus einer Zelle alle 6-stelligen Zahlen herauszufiltern und in neue Zellen zu schreiben, kannst Du folgende Schritte befolgen:

  1. Öffne Excel und erstelle ein neues Arbeitsblatt.

  2. Gib die Daten in eine Zelle ein, z.B.: 056488 RS, 0421, Dokumente, 05699 056969.

  3. Aktiviere die Entwicklertools. Falls Du diese noch nicht aktiviert hast, kannst Du dies unter Datei > Optionen > Menüband anpassen tun.

  4. Öffne den VBA-Editor mit ALT + F11.

  5. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf VBAProject (DeinDateiname), wähle Einfügen und dann Modul.

  6. Kopiere den folgenden VBA-Code in das Modul:

    Sub TrennMich()
       rngRegexSplit Selection, "(?:^|\D)(\d{6})(?!\d)", , True
    End Sub
    
    Sub rngRegexSplit(src As Range, pattern As String, _
       Optional IgnoreCase As Boolean = False, _
       Optional GlobalSplit As Boolean = False, _
       Optional SplitVert As Boolean = False)
    
       Dim cell As Range
       Dim i As Integer, j As Integer, k As Integer
       Dim re As Object, m As Object
    
       Set re = CreateObject("vbscript.regexp")
       re.pattern = pattern
       re.IgnoreCase = IgnoreCase
       re.Global = GlobalSplit
    
       For Each cell In src
           Set m = re.Execute(cell.Value)
           k = 1
           For i = 0 To m.Count - 1
               For j = 0 To m(i).SubMatches.Count - 1
                   If SplitVert Then
                       cell.Offset(k, 0).Value = m(i).SubMatches(j)
                   Else
                       cell.Offset(0, k).Value = m(i).SubMatches(j)
                   End If
                   k = k + 1
               Next
           Next
           Set m = Nothing
       Next
       Set re = Nothing
    End Sub
  7. Schließe den VBA-Editor und gehe zurück zu Excel.

  8. Wähle die Zellen aus, die Du analysieren möchtest, und führe das Makro TrennMich aus.

Das Makro wird nun alle 6-stelligen Zahlen extrahieren und in die ausgewählten Zellen schreiben.


Häufige Fehler und Lösungen

  • Fehler: "Typenübereinstimmung": Dieser Fehler tritt auf, wenn Du die falschen Zellreferenzen verwendest. Stelle sicher, dass die Zellen korrekt ausgewählt sind.
  • Keine 6-stelligen Zahlen gefunden: Überprüfe, ob die verwendete Regex ((?:^|\D)(\d{6})(?!\d)) korrekt ist und dass die Daten im richtigen Format vorliegen.
  • Makro funktioniert nicht: Stelle sicher, dass Du die Entwicklertools aktiviert hast und das Makro in einem Modul gespeichert ist.

Alternative Methoden

Wenn Du kein VBA verwenden möchtest, kannst Du auch die Excel-Funktionen nutzen, um 6-stellige Zahlen zu isolieren. Eine Kombination aus FILTER, TEXTSPLIT oder SEARCH könnte verwendet werden, um die Daten in kleinere Teile zu zerlegen und anschließend die 6-stelligen Codes herauszufiltern.


Praktische Beispiele

  1. Beispiel 1: Gegeben ist der Text 056488 RS, 0421, Dokumente, 05699 056969. Das Makro wird 056488 und 056969 in separaten Zellen auflisten.
  2. Beispiel 2: In einer Zelle steht 123456A, 654321B, 12345. Das Makro gibt 123456 und 654321 zurück.

Tipps für Profis

  • Nutze Regular Expressions in VBA, um spezifischere Filter zu erstellen.
  • Experimentiere mit verschiedenen Regex-Mustern, um die gewünschten Zahlenkombinationen zu extrahieren.
  • Dokumentiere Deinen Code, um bei zukünftigen Anpassungen schneller arbeiten zu können.

FAQ: Häufige Fragen

1. Was ist eine 6-stellige Zahl?
Eine 6-stellige Zahl ist eine Zahl, die genau sechs Ziffern enthält, wie zum Beispiel 123456.

2. Wie viele Möglichkeiten gibt es bei einem 6-stelligen Code?
Es gibt insgesamt 1.000.000 mögliche Kombinationen für 6-stellige Codes (000000 bis 999999).

3. Kann ich auch 18-stellige Zahlen generieren?
Ja, dafür müsstest Du die Regex und das Makro entsprechend anpassen, um eine längere Zahlenkombination zu berücksichtigen.

4. Wo finde ich eine Liste aller 6-stelligen Codes?
Eine komplette Liste aller 6-stelligen Codes findest Du nicht in Excel, da dies sehr viele Kombinationen wären. Du kannst jedoch einen Zahlengenerator verwenden, um diese zu erstellen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige