2017-09-12 2 views
0

Ich bin derzeit beschäftigt mit Excel Tooling und viel lernen, aber ich habe eine Frage. Zur Zeit habe ich ein paar Zeilen mit Daten in den Zeilen. In den Zeilen gibt es viele Daten, aber ich brauche einen bestimmten Teil der Zeile. Natürlich kann ich alles manuell löschen, aber um das für 3000 Zeilen zu tun, werde ich viel Zeit verschwenden.Wie zu VBA Excel Macro Teil einer Zeichenfolge

Kann mir jemand mit einem Makro helfen, das Daten filtert. Die Daten, die ich brauche, liegen zwischen [und], also zum Beispiel [Daten]

Ich hoffe, Sie können mir helfen und wenn Sie weitere Informationen benötigen, fragen Sie mich einfach! Ich hoffe ihr könnt mir helfen!

Beispiel String ROW:

[Sandwitch]><xsd:element name="T8436283" 

Was brauche ich?

Also brauche ich ein Makro, das nur den Sandwitch daraus holt und in die B-Spalte einfügt. Die Zeichenfolge mit allen Informationen bleibt in Spalte A und der Sandwitch geht in Spalte B und das für alle Zeilen.

+1

Ihre Frage ist sehr vage. Bitte fügen Sie Beispieldaten und erwartete Ergebnisse hinzu. – tigeravatar

+0

Sie sagen, Sie haben eine einzelne Zelle mit Informationen wie Wörter Wörter [wichtige Wörter hier] Wörter Wörter und Sie möchten nur "wichtige Wörter hier" extrahieren? – BruceWayne

+0

Entschuldigung für die vage Frage. Ich habe ein Beispiel hinzugefügt. Also im Grunde gibt es in meinem String eine Menge Informationen und ich brauche nur die Informationen zwischen dem [und dem]. Die anderen Informationen sind nicht notwendig. Der String ist in Spalte A und nur der Sandwitch (In meinem Beispiel) muss in Spalte B platziert werden. –

Antwort

2

Option 1: Suchen/Ersetzen 1) Kopieren von Daten in einer anderen Spalte (nur Originalkopie) 2) Führen Sie Suchen/Ersetzen "* [" 3) Führen Sie Suchen/Ersetzen "]" Jetzt Speichern haben Sie Daten was war zwischen [].

Option 2: Verwenden Formeln 1) können, die ursprünglichen Daten in Spalte übernehmen "A" 2) Übernehmen diese Formel in der Spalte "B", welche Daten zwischen [extrahieren] = MID (A1, FIND ("[ ", A1) + 1, FIND ("] ", A1) -FIND (" [", A1) -1)

Option 3: Makro Wenn es unbedingt benötigt wird, kann ich helfen, ein Makro zu erstellen, andernfalls Versuche zuerst zwei einfachere Optionen.

+0

Danke! Hast du auch eine Formel für zwischen "und" Die 2. Option hat mir gut getan! Aber ich möchte auch in Spalte C die Information, die zwischen "und" steht, wenn du mir damit helfen könntest, dann hast du meinen Tag gemacht! –

0

Wenn Sie Ihre Füße in Regular Expressions nass werden wollen, wird Sie der folgende Code dorthin bringen. Sie haben einen Verweis auf die VB-Scripting-Bibliothek

Tools > References > Microsoft VBScript Regular Expressions 5.5 

Dann wird der Code hinzufügen wie folgt:

Sub textBetweenStuffs() 

    Dim str As String 
    Dim regEx As RegExp 
    Dim m As Match 
    Dim sHolder As MatchCollection 
    Dim bracketCollection As Collection 
    Dim quoteCollection As Collection 

    Set regEx = New RegExp 

    'Matches anything in between an opening bracket and first closing bracket 
    regEx.Pattern = "\[(.*?\])" 
    str = "[Sandwitch]><xsd:element name=""T8436283""" 

    'populates matches into match collection 
    Set sHolder = regEx.Execute(str) 

    Set bracketCollection = New Collection 

    'loop through values in match collection to do with as you wish 
    For Each m In sHolder 
     bracketCollection.Add m.Value 
    Next i 

    Set sHolder = Nothing 

    'get values between Quotations 
    regEx.Pattern = "\"(.*?\")" 

    'populates matches into match collection 
    Set sHolder = regEx.Execute(str) 

    Set quoteCollection = New Collection 

    'loop through values in match collection to do with as you wish 
    For Each m In sHolder 
     quoteCollection.Add m.Value 
    Next i 

End Sub 
0

Ein Allzweck „Element finden in sx bis zum nächsten Start y „:

Function GenExtract(FromStr As String, _ 
        StartSep As String, EndSep As String) _ 
       As Variant 

Dim StPos As Long 
Dim EnPos As Long 

GenExtract = CVErr(xlErrNA) 
If StartSep = "" Or EndSep = "" Then Exit Function 'fail 
StPos = InStr(1, FromStr, Left(StartSep, 1)) 
If StPos = 0 Or StPos = Len(FromStr) Then Exit Function 'fail 
EnPos = InStr(StPos + 1, FromStr, Left(EndSep, 1)) 
If EnPos = 0 Then Exit Function 'fail 

GenExtract = Mid(FromStr, StPos + 1, EnPos - StPos - 1) 

End Function 

Wenn die beiden Separatoren th Gleiches, wie in Anführungszeichen, gibt es die erste Zeichenfolge, die von diesen eingeschlossen ist.

Verwandte Themen