2017-10-19 3 views
0

So habe ich eine Tabelle, mit mehreren Modulen in der ersten Spalte und in der zweiten Spalte die verschiedenen Prozesse in diesem Modul vorhanden. Es sieht etwa so aus:Vlookup mit mehreren Werten

IMAGE

Jetzt habe ich eine Datenüberprüfung Liste der einzigartigen einzigartigen Module erstellt, so dass eine Liste mit Modul A Modul B und Modul C. Wenn ich ein Modul aus wählen In dieser Liste möchte ich alle Prozesse, die zum Modul gehören, neben der Dropdown-Liste in separaten Zellen erscheinen lassen. Es wäre ein 'nice-to-have', wenn die Prozesse unter einander erscheinen.

Ich habe verschiedene Dinge mit Index und vlookup usw. versucht, aber ich kann keinen Weg finden, es zu beheben.

Antwort

0

Wenn Sie Office 365 Excel verwenden dann diese Matrixformel haben:

=TEXTJOIN(",",TRUE,IF($A$2:$A$7 = D2,$B$2:$B$7,"")) 

Dies ist eine Matrixformel und muss mit bestätigt werden Ctrl-Shift-Eingabe, wenn Bearbeitungsmodus zu verlassen. Wenn es richtig gemacht wird, wird Excel {} um die Formel setzen.

enter image description here


Wenn Sie dann diesen Code Excel Office 365 haben nicht an der Arbeitsmappe gebunden in einem Modul setzen und verwenden Sie 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 

Um sie zu erhalten in getrennten Zellen untereinander verwenden diese Formel in der ersten Zelle und abschreiben genug, um zu decken die längste Liste erscheinen:

=IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($A$2:$A$7)/($A$2:$A$7=$D$2),ROW(1:1))),"") 

enter image description here

+0

Danke für die schnelle Reaktion, aber ich möchte, dass die Prozesse in getrennten Zellen erscheinen, der schönste Weg für mich wäre, wenn sie unter einander erscheinen würden. –

+0

Dann sollte man das sagen in deinem ursprünglichen Beitrag. –

+0

@NickKuipers sehe Bearbeitungen –