![Excel: ¿Cómo encuentro valores de texto comunes de varias (>2) filas?](https://rvso.com/image/1496884/Excel%3A%20%C2%BFC%C3%B3mo%20encuentro%20valores%20de%20texto%20comunes%20de%20varias%20(%3E2)%20filas%3F.png)
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