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.
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:
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
@Vityata, ich bevorzuge VBA stattdessen :) –
Jeder bevorzugt VBA statt verschachtelte Excel-Formeln :) – Vityata