Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zahlen extrahieren und dann sortieren

Zahlen extrahieren und dann sortieren
Kurt
Hallo und guten Abend,
in meiner Tabelle sollen die Zahlen extrahiert und in der Spalte E einzeln aufgelistet werden (wenn möglich auch noch aufsteigend sortiert, das ist aber nicht so wichtig). Die Zahlen sind immer sechsstellig.
https://www.herber.de/bbs/user/72499.xls
Habe schon diverse Forumsbeiträge durchforstet, aber noch keine Idee.
Kann jemand helfen?
Gruß Kurt
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Zahlen extrahieren und dann sortieren
28.11.2010 10:52:32
Reinhard
Hallo Kurt,
Sub extrakt()
Dim ZeiC As Long, ZeiE As Long, Satz As String, B As Long
ZeiE = 5
For ZeiC = 6 To Cells(Rows.Count, 3).End(xlUp).Row
Satz = Satz & Cells(ZeiC, 3)
Next ZeiC
For B = 1 To Len(Satz) - 5
If Mid(Satz, B, 1) >= "0" And Mid(Satz, B, 1) 
Gruß
Reinhard
Anzeige
noch eine Variante
28.11.2010 12:34:55
Tino
Hallo,
habe hier auch mal eine Version zusammengebastelt.
Sub Extrahiere_Zahlen()
Dim strData$, ArrayAusgabe(), varInhalt
Dim Regex As Object, objMatch As Object
Dim nCount&

Const sZahlen$ = "\d+,\d+|\d+"

With Tabelle1 'Tabelle anpassen 
    nCount = .Cells(.Rows.Count, 3).End(xlUp).Row 'letzte Zeile in Spalte 3 
    If nCount < 7 Then 'keine Daten im Bereich? 
        MsgBox "keine Daten ab C7!"
        Exit Sub
    End If
    If nCount > 7 Then
        strData = Join(Application.Transpose(.Range("C7", .Cells(nCount, 3)).Value2), "@")
    Else
        strData = .Range("C7").Value
    End If
    nCount = 0
    
    Set Regex = CreateObject("Vbscript.Regexp")
    With Regex
        .MultiLine = True
        .Pattern = sZahlen
        .Global = True
        Set objMatch = .Execute(strData)
    End With
          
    If objMatch.Count > 0 Then
        Redim Preserve ArrayAusgabe(objMatch.Count - 1)
        For Each objMatch In objMatch
            ArrayAusgabe(nCount) = CSng(objMatch.Value)
            nCount = nCount + 1
        Next objMatch
    End If
    
    'Bereich leer machen für neue Daten 
    .Range("E7:E" & .Rows.Count).ClearContents
    If nCount > -1 Then
        With .Range("E7").Resize(nCount)
            .Value = Application.Transpose(ArrayAusgabe)
            .Sort Key1:=.Cells(1, 1), Order1:=xlAscending, Header:=xlNo
        End With
    End If
End With
End Sub
Gruß Tino
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige