AW: Zellen bei Kriterium verketten
01.11.2017 00:44:38
Daniel
Hi
ohne VBA gehst ganz einfach, wenn du die Liste nach Spalte A sortieren kannst.
Wenn die Liste so sortiert ist, dass alle Namen einer Gruppe direkt untereinander stehen, gibst du folgende Formel in C1 ein und ziehst sie bis zur letzten Zeile der Tabelle:
=B1&Wenn(A1=A2;", "&C2;"")
die Namensliste wird dann pro Gruppe von unten nach oben aufgebaut, und in der jeweils ersten Zeile einer Gruppe steht der vollständige Name
Fußball.....Jauch G..
. Jauch G., Meyer B., Müller A.
Fußball.....Meyer B
... Meyer B., Müller A.
Fußball.....Müller A..
.Müller A.
Handball....Krüger M
. Krüger M.
Turnen......Herber H
. Herber H., Muster C.
Turnen......Muster C
. Muster C.
wenn du dann in D1 den Bereich eingibst, kannst du mit dieser Formel in E1 die Namen dazu auslesen:
=Sverweis(D1;A:C;3;falsch)
der Sverweis mit 4. Parameter = Wahr gibt dir immer den Wert aus der Zeile zurück, in der der Begriff das erste mal auftaucht, daher muss die vollständige Namesliste in der ersten Zeile stehen.
wenn die Daten nicht sortiert werden können, ist es am sinnvollsten sich was selber zu programmieren, beispielsweise so eine Funktion:
Function NamenProBereich(Bereich As String, BereichsSpalte As Range, NamensSpalte As Range) As _
String
Dim arrNamen
Dim arrBereich
Dim i As Long
arrNamen = Intersect(NamensSpalte, NamensSpalte.Worksheet.UsedRange)
arrBereich = Intersect(BereichsSpalte, BereichsSpalte.Worksheet.UsedRange)
For i = 1 To UBound(arrBereich)
If arrBereich(i, 1) = Bereich Then
NamenProBereich = NamenProBereich & ", " & arrNamen(i, 1)
End If
Next
If NamenProBereich "" Then NamenProBereich = Mid(NamenProBereich, 2)
End Function
in die Zelle D1 dann:
=NamenProBereich(C1;A:A;B:B)
Gruß Daniel