2017-07-25 6 views
0

ich eine bestimmte Zelle zum Beispiel habenExtrahieren eines Teils einer Zelle in Excel

CN=Cloud Test1,OU=Corp,OU=BT-Users,OU=BTATTER,OU=Test,OU=AD UAT,OU=Services,OU=Managed Users,DC=ngco,DC=com 

Die Anzahl der OU = mit verschiedenen Datensätzen variiert, mein Ziel ist es, nur etwas zu extrahieren, die OU = Infront hat, also grundsätzlich möchte ich:

"OU=Corp,OU=BT-Users,OU=BTATTER,OU=Test,OU=AD UAT,OU=Services,OU=Managed Users" 

als meine Ausgabe.

Nochmals vielen Dank für Ihre Hilfe!

+0

Haben Sie es wollen eine Zelle oder viele? –

+0

Sie können Text zu Spalten, Komma als Trennzeichen verwenden, um die Informationen aus den Zellen zu erhalten. Dann filtere/entferne sonst die nicht benötigten Informationen und füge dann mit 'TextJoin()' zurück, wenn du es hast. Was hast du probiert? – BruceWayne

+0

@BruceWayne oder nur TEXTJOIN(), siehe unten. 8P –

Antwort

1

als Matrixformel:

=TEXTJOIN(", ",TRUE,IF(LEFT(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",999)),(ROW(1:99)-1)*999+1,999)),2)="OU",TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",999)),(ROW(1:99)-1)*999+1,999)),"")) 

Als Matrixformel, muss sie mit bestätigt werden Ctrl-Shift-Enter statt Eingabe, wenn Bearbeitungsmodus zu verlassen.

TEXTJOIN() ist nur mit einem Abonnement für Office 365 Excel verfügbar.

enter image description here


Wenn Sie TEXTJOIN nicht(), setzen Sie den Code in einem Modul an der Arbeitsmappe angebracht und die Formel verwenden, wie oben beschrieben:

Function TEXTJOIN(delim As String, skipblank As Boolean, arr) 

    Dim d As Long 
    Dim c As Long 
    Dim arr2() 
    Dim t As Long, y As Long 
    t = -1 
    y = -1 
    If TypeName(arr) = "Range" Then 
     arr2 = arr.Value 
    Else 
     arr2 = arr 
    End If 
    On Error Resume Next 
    t = UBound(arr2, 2) 
    y = UBound(arr2, 1) 
    On Error GoTo 0 

    If t >= 0 And y >= 0 Then 
     For c = LBound(arr2, 1) To UBound(arr2, 1) 
      For d = LBound(arr2, 1) To UBound(arr2, 2) 
       If arr2(c, d) <> "" Or Not skipblank Then 
        TEXTJOIN = TEXTJOIN & arr2(c, d) & delim 
       End If 
      Next d 
     Next c 
    Else 
     For c = LBound(arr2) To UBound(arr2) 
      If arr2(c) <> "" Or Not skipblank Then 
       TEXTJOIN = TEXTJOIN & arr2(c) & delim 
      End If 
     Next c 
    End If 
    TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim)) 
End Function 
+0

Oh ja, es ist so offensichtlich! (Cleveres Denken!) – BruceWayne

+1

Nur imitieren, was Sie dem OP in einer Formel gesagt haben. Ich stehe nur auf den Schultern von Riesen wie dir. @BruceWayne –

+1

... Nun, schält. (Um es klar zu sagen, du bist der Riese hier! Aber wirklich, dank dir und den anderen Leuten, kann ich sogar scheinbar überdurchschnittlich groß sein: P) – BruceWayne

Verwandte Themen