2016-11-18 2 views
0

Dies könnte eine einfache für alle Computer Wiz Out hier sein! Ich möchte eine Zeichenfolge in einem EXCEL-Textfeld extrahieren. Der Datensatz ist irgendwie unordentlich, es gibt Platz, Zeichen und andere Texte, die ich nicht brauche. Zum Beispiel:Daten scrubbing in EXCEL

brauche ich ABC12345D1 aus „ABC ABCABC12345D1“

       "ABC,ABCABC12345D1" 
          "KOhn!ABCABC12345D1" 
          "ABCABC12345D2 ABCABC12345D1" 
          "ABCABC12345D1ABCABC12345D1" 
          "MCDONALDABCABC12345D1" 

Aber das ist nur eine der Kennung I extrahieren müssen zu nehmen. Ich wünschte, es gibt eine Formel, die ich in den Rest der Spalte ziehen und ziehen kann.

So wird die ABCABC12345D1 von

gemacht _ _ _ Die ersten drei Zeichen ist ein ID

_ _ _ _ _ Der zweite Teil ist der Standort-Tag

_ _ und die am wenigsten Vergangenheit ist, ob es an oder aus ist (ich kann leben, wenn das Canoot extrahiert werden kann.)

Jetzt habe ich versucht, die richtigen 8 oder 10 Zeichen zu nehmen und den ganzen Raum aus, aber gibt es einen klareren Weg, wie um diese Daten zu ziehen?

Antwort

0

Regex?

Function Regex(Cell) 
    Dim RE As Object 

    Set RE = CreateObject("vbscript.regexp") 

    RE.Pattern = "(\w{6}\d{5}\w\d)" 
    RE.Global = True 
    RE.IgnoreCase = True 
    Set Matches = RE.Execute(Cell) 

    For Each res In Matches 
     Regex = Regex & "," & res 
    Next res 
    Regex = Mid(Regex, 2) 
End Function 

Öffnen Sie VBA-Editor mit ALT + F11.
Einfügen -> Modul Kopieren Sie den obigen Code in das Modulfenster. Schließen Sie den VBA-Editor.

In Excel Blatt =Regex(A1) schreiben, um die Funktion zu aktivieren.

enter image description here

+0

Danke !! Gibt es einen einfacheren Weg dies zu tun? Ich nehme an, das ist VBA? –

+0

Ja, das ist VBA. Hab nicht gesehen, dass du VBA nicht erkannt hast. Tut mir leid, dass ... Ich kann es zu einem UDF machen? Auf diese Weise können Sie es als Formel verwenden. Sagen Sie, wenn Text in A1 ist, sollten Sie in der Lage sein, in B1 'REGEX (" A1 ")' zu schreiben und es wird den Teil zurückgeben, den Sie wollen. Ist das okay für dich? – Andreas

+0

Sie müssen Regex als verwenden (ich denke) es ist nicht immer ABCABC ... Mit Regex erklären Sie, was Sie suchen, schrieb ich eine Regex für sechs Zeichen, fünf Ziffern, ein Zeichen und eine Ziffer, in dieser Reihenfolge. Wenn es das sieht, egal was die Zeichen oder Ziffern, es ist ein Match – Andreas