Excel: ¿Cómo encuentro valores de texto comunes de varias (>2) filas?

Excel: ¿Cómo encuentro valores de texto comunes de varias (>2) filas?

Esta es esencialmente una variante de la pregunta que se hace aquí: Excel: ¿Cómo encuentro valores de texto comunes en varias (>2) columnas?

En este caso, sin embargo, en lugar de varias columnas de datos, necesito buscar en varias filas. Entonces, cada fila puede tener hasta 17 columnas de datos no repetidos y quiero encontrar una coincidencia o coincidencias entre filas. Aquí hay una pequeña muestra de cómo podrían verse los datos (es una lista de posibles coordenadas para un sitio recopiladas de múltiples fuentes, con la intención de señalar una ubicación única):

Fuente Coord1 Coord2 Coord3 Coord4 Coord5 Coord6
Fuente1 (4,0) (5,0)
Fuente2 (3,0) (4,0) (5,0) (3,1) (4,1) (5,1)
Fuente3 (4,0) (5,1) (5,0)
Fuente4 (3,0) (4,0) (5,0) (3,1) (3,2)
Fuente5 (2,3) (3,2) (4,1) (4,2) (5,0)

En el hilo al que se hace referencia, el usuario XOR-LX proporcionó un método muy útil para la comparación por columnas. De hecho, si transpongo los datos anteriores, su método funciona bien, devolviendo (5,0) como la ubicación única en la primera celda de salida, pero no he podido modificarlo para su uso por filas, ya que mis datos están organizados. Hasta ahora he intentado modificarlo de la siguiente manera, sin suerte:

  • Rango1 =$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)

Siendo la entrada final:
=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))),"")

Usando la modificación anterior, simplemente no obtengo ningún resultado (ni mensajes de error), solo una celda en blanco. Básicamente, intenté simplemente "revertir" su método cambiando FILA por COLUMNA, etc., pero sospecho que la solución puede ser un poco más compleja, especialmente dada mi debilidad con las funciones matriciales de Excel.

Cualquier ayuda es muy apreciada.

Respuesta1

Puede probar este código en el módulo de hoja de trabajo, no es muy robusto y puede repetir colores, pero podría funcionar. Si no, vuelve a publicar aquí. Simplemente cambie el componente de rango (actualmente B1 a G100) para adaptarlo.

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

información relacionada