(Bitte das Problem immer konkret beschreiben, statt auf ein anderes Forum zu verweisen.)
“Für Excel” gibt es unglaublich viele “Makros” von höchst zweifelhaftem Wert. Vermutlich ermutigt der Verkäufer die Makroprogrammiererei, weil sie zum sogenannten “Vendor-Lock-In” (eigentlich ein Kundengefängnis), beiträgt.
Eines der genannten Forenthemen habe ich angesehen. Dort Fall geht es, so würde ein Datenbankkenner sagen, um die Darstellung einer 1:n Relation in kompakter Form. Die 1 betrifft dabei den Wert (ggf. Text), der zu suchen ist, und das n bezeichnet die Anzahl der Fundstücke, die dann, je mit einer Ergänzug verbunden, aufgelistet werden sollen.
Das schaut zwar ein bisschen nach SVERWEIS aus, aber diese Standardfunktion liefert bekanntlich nur die erste Fundstelle.
Rückt man das Verketten beliebig vieler Teilergebnisse in den Vordergrund, und beachtet man, dass wahrscheinlich nicht nur ein zugeordneter Wert je Fundstelle geliefert werden soll, sieht man klarer in Richtung Lösung: Die ganze Datensammlung als potentielles Ergebnis betrachten und verketten, und dabei diejenigen Zeilen ausschließen, die die Bedingung nicht erfüllen. Da können freilich alle ausgeschlossen sein.
Der Kern der Lösung ist also die fortgesetzte Verkettung der Fundobjekte, wohl unter Einfügung eines Trenners.
Dafür gibt es tatsächlich (und seltsamerweise) keine praktikable Lösung mit Standardfunktionen, und jetzt kommt eigene Programmierung ins Spiel. Der schöne Nebeneffekt ist dann, dass man eine zusätzliche Funktion hat, die auch bei vielen anderen Aufgaben, die gar nicht an SVERWEIS erinnern, eingesetzt werden kann. Wegen ganz anderer Aufgaben dieser Art habe ich einst eine solche Funktion geschrieben. Der Code ist:
Function concatenateColArrayDelimited(pArray(),pDelim) As String
Dim i As Long
Dim resText As String
Dim locText As String
rem Catch the exceptional case of a scalar passed to the first parameter.
If NOT IsArray(pArray) Then
Dim HelpArray(1 To 1, 1 To 1)
HelpArray(1,1) = pArray
pArray = HelpArray
EndIf
resText = ""
For i = Lbound(pArray(),1) to Ubound(pArray(),1)
locText = pArray(i,1)
If (resText <> "") And (locText <> "") Then
resText = resText & pDelim
EndIf
resText = resText & locText
Next i
concatenateColArrayDelimited = resText
End Function rem concatenateColArrayDelimited
und wie die Funktion zur Lösung deines Problems eingesetzt werden kann, ist im angehängten Beispiel zu sehen. SVERWEIS tritt dabei natürlich nicht auf. Beachte bitte, dass die Lösungsformel als Array-Formel (also mit Ctrl+Shift+Enter) eingegeben werden muss.
ask61180ArbitraryConcatenate001.ods