Soweit mir bekannt ist, gibt es keine integrierten Funktionen, mit denen durch Kommas getrennte Tags in Excel analysiert und zusammengefasst werden können. Sie können natürlich Ihre eigene Lösung mit Arbeitsblattfunktionen und ein wenig VBA erstellen. Hier ist eine schnelle Lösung dafür.
Schritt 1 : Drücken Sie Alt+ F11, um das VBA-Editorfenster in Excel zu öffnen. Fügen Sie ein neues Modul ein und fügen Sie diesen Code für eine benutzerdefinierte Funktion ein.
Public Function CCARRAY(rr As Variant, sep As String)
'rr is the range or array of values you want to concatenate. sep is the delimiter.
Dim rra() As Variant
Dim out As String
Dim i As Integer
On Error GoTo EH
rra = rr
out = ""
i = 1
Do While i <= UBound(rra, 1)
If rra(i, 1) <> False Then
out = out & rra(i, 1) & sep
End If
i = i + 1
Loop
out = Left(out, Len(out) - Len(sep))
CCARRAY = out
Exit Function
EH:
rra = rr.Value
Resume Next
End Function
Mit dieser Funktion können Sie durch Kommas getrennte Listen erstellen, um die vorhandenen Tag-Daten zusammenzufassen.
Schritt 2 : Geben Sie in einem Arbeitsblatt in eine Zelle (H2 im folgenden Beispiel) das Tag ein, nach dem Sie suchen möchten. Geben Sie in die Zelle rechts die folgende Formel ein, indem Sie Ctrl+ Shift+ drücken Enter.
=IFERROR(CCARRAY(IF(NOT(ISERROR(FIND(H2,$B$2:$B$6))),$A$2:$A$6),", "),"No matches found.")
Durch Drücken von Ctrl+ Shift+ geben EnterSie die Formel als Matrixformel ein. Es wird {...}
in der Bearbeitungsleiste von umrahmt angezeigt. Beachten Sie, dass in der Formel $B$2:$B$6
der Bereich angegeben ist, der alle Tags für die in aufgeführten Elemente enthält $A$2:$A$6
.
BEARBEITEN:
Wenn Sie nichts dagegen haben, dass Ihre Übereinstimmungen in einer Spalte anstatt in einer Liste in einer Zelle aufgeführt werden, können Sie Übereinstimmungen für Tags nur mit Arbeitsblattfunktionen zurückgeben.
Wo Ihre Titel in sind Column A
, sind die Tags in Column B
und das Tag für Sie in suchen ist H2
, können Sie die folgenden Befehle verwenden Matrixformel in I2
und füllen so weit wie Sie brauchen:
=IFERROR(INDEX($A$1:$A$6,SMALL(IF(NOT(ISERROR(FIND($H$2,$B$1:$B$6))),ROW($B$1:$B$6),2000000),ROW()-1)),"")
Die Formel erstellt zunächst ein Array von Zahlen, basierend darauf, ob die Tags in jeder Zeile den Suchbegriff enthalten. Wird eine Übereinstimmung gefunden, wird die Zeilennummer im Array gespeichert. Wenn es nicht gefunden wird, wird 2000000 im Array gespeichert. Als nächstes gibt der SMALL(<array>,ROW()-1)
Teil der Formel den ROW()-1
kleinsten Wert aus dem Array zurück. Als Nächstes wird dieser Wert als Indexargument an die INDEX()
Funktion übergeben, wo der Wert an diesem Index im Array der Titel zurückgegeben wird. Wenn eine Zahl größer als die Anzahl der Zeilen im Titel-Array INDEX()
als Argument übergeben wird, wird ein Fehler zurückgegeben. Da 2000000 als Argument übergeben wird, wenn keine Übereinstimmungen gefunden werden, wird ein Fehler zurückgegeben. Die IFERROR()
Funktion kehrt dann ""
in diesem Fall zurück.
Es ist wichtig zu verstehen, wie ROW()
diese Formel verwendet wird. Wenn Sie Ihre Ergebnisliste ab einer anderen Zeile anzeigen möchten, müssen Sie das zweite Argument der SMALL()
Funktion so anpassen , dass es den ersten kleinsten Wert aus dem Array zurückgibt. Beginnt Ihre Ergebnisliste beispielsweise in Zeile 1 statt in Zeile 2, verwenden Sie SMALL(...,ROW())
statt SMALL(...,ROW()-1)
.
Wenn Ihre Liste der Titel und Tags nicht in Zeile 1 beginnt, müssen Sie auch die Formel anpassen. Das zweite Argument der IF()
Funktion muss so eingestellt werden , dass eine Übereinstimmung in der ersten Zeile Ihrer Daten zurückgibt 1. Beispiel : Wenn die Liste der Titel beginnt in Zeile 2 statt Zeile 1, müssen Sie die Formel umfassen IF(...,ROW($A$2:$A$7)-1,...)
statt IF(...,ROW($A$1:$A$6),...)
.