Excel: Wie finde ich gemeinsame Textwerte aus mehreren (>2) Zeilen?

Excel: Wie finde ich gemeinsame Textwerte aus mehreren (>2) Zeilen?

Dies ist im Wesentlichen eine Variante der hier gestellten Frage: Excel: Wie finde ich gemeinsame Textwerte aus mehreren (>2) Spalten?

In diesem Fall muss ich jedoch nicht mehrere Datenspalten, sondern mehrere Zeilen durchsuchen. Jede Zeile kann also bis zu 17 Spalten mit nicht wiederholten Daten enthalten, und ich möchte eine oder mehrere Übereinstimmungen zwischen den Zeilen finden. Hier ist ein kleines Beispiel, wie die Daten aussehen könnten (es handelt sich um eine Liste möglicher Koordinaten für einen Standort, die aus mehreren Quellen zusammengetragen wurden, mit der Absicht, einen eindeutigen Standort zu bestimmen):

Quelle Koord1 Koord2 Koord3 Koord4 Koord5 Koord6
Quelle1 (4,0) (5,0)
Quelle2 (3,0) (4,0) (5,0) (3,1) (4,1) (5,1)
Quelle3 (4,0) (5,1) (5,0)
Quelle4 (3,0) (4,0) (5,0) (3,1) (3,2)
Quelle5 (2,3) (3,2) (4,1) (4,2) (5,0)

Im referenzierten Thread hat der Benutzer XOR-LX eine sehr nützliche Methode für spaltenweise Vergleiche bereitgestellt. Tatsächlich funktioniert seine Methode einwandfrei, wenn ich die obigen Daten transponiere, und gibt (5,0) als eindeutige Position in der ersten Ausgabezelle zurück, aber ich konnte sie nicht für die zeilenweise Verwendung ändern, da meine Daten angeordnet sind. Bisher habe ich versucht, sie auf folgende Weise zu ändern, ohne Erfolg:

  • Bereich1 =$B$2:$G$6
  • Arry1 =ROW(Range1)-MIN(ROW(Range1))
  • Arry2 =COLUMN(INDEX(Range1,1,))-MIN(COLUMN(INDEX(Range1,1,)))+1
  • Arry3 = MMULT(0+COUNTIF(OFFSET(INDEX(Range1,1,),Arry1,,,),INDEX(Range1,1,))>0),COLUMN(INDIRECT(ROWS(Range1)&":1"))^0)

Die endgültige Eingabe lautet:
=IFERROR(INDEX(INDEX(Range1,1,),SMALL(IF(FREQUENCY(IF(INDEX(Range1,1,)<>"",IF(Arry3=ROWS(Range1),MATCH(INDEX(Range1,1,),INDEX(Range1,1,),0))),Arry2),Arry2),COLUMNS(A:$A))),"")

Mit der obigen Änderung erhalte ich einfach keine Ausgabe (und auch keine Fehlermeldungen), sondern nur eine leere Zelle. Ich habe im Wesentlichen versucht, seine Methode einfach „umzukehren“, indem ich ROW durch COLUMN usw. ersetzt habe, aber ich vermute, dass die Lösung etwas komplexer sein könnte, insbesondere angesichts meiner Schwäche bei Excel-Matrixfunktionen.

Jede Hilfe wird sehr geschätzt.

Antwort1

Sie können diesen Code im Arbeitsblattmodul ausprobieren. Er ist nicht sehr robust und kann Farben wiederholen, aber er könnte funktionieren. Wenn nicht, posten Sie ihn hier. Ändern Sie einfach die Bereichskomponente (derzeit B1 bis G100) entsprechend.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range, c As Range
Dim MyCI As Long

If Intersect(Target, Range("$B$1:$G$100")) Is Nothing Then Exit Sub

For Each cell In Range("$B$1:$G$100")
    cell.Interior.ColorIndex = 0
Next cell

For Each cell In Range("$B$1:$G$100")
    If WorksheetFunction.CountIf(Range("$B$1:$G$100"), cell.Value) > 1 Then
    If cell.Interior.ColorIndex = -4142 Then
    MyCI = Int((56 - 1 + 1) * Rnd + 1)
        For Each c In Range("$B$1:$G$100")
            If c.Value = cell.Value Then c.Interior.ColorIndex = MyCI
        Next c
   End If
   End If
Next cell

End Sub

verwandte Informationen