2017-02-14 3 views
1

Ich habe eine Beispieltabelle, um die Übereinstimmungen zu erhalten und in einer Spalte aufzulisten. VLOOKUP bringt nur die erste übereinstimmende Spalte wie bekannt. Wie kann ich diese Werte mit nur einer Formel auflisten?Wie werden mehrere von SVERWEIS mit einer einzelnen Formel zurückgegebene Ergebnisse aufgelistet?

Hier die Tabelle:

enter image description here

Ich brauche die Werte zu erhalten, die erste Spalte Wert gleich 1 und den entsprechenden Namen nächsten schreiben. Wie kann ich das tun?

+0

Hier ist etwas, das Sie tun können: https://www.extendoffice.com/documents/excel/2699-excel-vlookup-find-first- 2nd-match.html Aber es sieht wirklich nach ziemlich viel Arbeit aus ... – Vityata

+0

@Vityata, ich bevorzuge VBA stattdessen :) –

+0

Jeder bevorzugt VBA statt verschachtelte Excel-Formeln :) – Vityata

Antwort

4

Wenn Sie Office 365 Excel dann diese haben verwenden:

=TEXTJOIN(",",TRUE,IF(A1:A6=1,B1:B6,"")) 

Dies als Array eingegeben werden muss durch Drücken von Strg-Umschalt-Eingabe statt Eingabe, wenn Bearbeitungsmodus zu verlassen. Wenn es richtig gemacht wird, wird Excel {} um die Formel setzen.

enter image description here


Wenn Sie Office 365 Excel nicht um ein Modul zu Ihrer Arbeitsmappe in dem VBE anhängen haben dann und poste diesen Code:

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 

Und die Formel eingeben, wie oben beschrieben.


Wenn auf der anderen Seite wollen Sie nicht es in einer Zelle, sondern eine einfache Liste dann diese Matrixformel in D2 verwenden:

=IFERROR(INDEX($B$1:$B$6,MATCH(1,($A$1:$A$6=1)*(COUNTIF($D$1:D1,$B$1:$B$6)=0),0)),"") 

Wieder ist es eine Matrixformel und muss eingegeben durch Drücken Sie Strg-Umschalt-Enter anstelle von Enter, wenn Sie den Bearbeitungsmodus verlassen. Wenn es richtig gemacht wird, wird Excel {} um die Formel setzen.

Dann kopiert/nach unten gezogen:

enter image description here

+0

Ich habe Office 2013, habe ich diese Funktion versucht und es nicht Für mich –

+0

@AliTor siehe Änderungen, müssen Sie möglicherweise den Bildschirm aktualisieren. –

+0

@AliTor haben Sie eine der anderen Optionen versucht. –

Verwandte Themen