Encontrar palabras comunes entre dos textos con fórmulas

Reto de LinkedIn que un miembro trae al grupo: dadas dos columnas con frases, encontrar las palabras que aparecen en ambas. La comunidad despliega un arsenal de enfoques con funciones modernas.

Enfoque "perpendicularidad" (Leo): dividir un texto por filas y el otro por columnas, comparar con = para crear una matriz de coincidencias, y filtrar los aciertos. Dos variantes:

Con ENCOL ignorando errores:

``
=MAP(A2:A6; B2:B6; LAMBDA(a; b;
LET(D; DIVIDIRTEXTO;
c; D(a;; " ");
UNIRCADENAS(" - ";; ENCOL(SI(c = D(b; " "); c; z); 2))
)
))
`

Con REPETIR (más elegante):

`
=MAP(A2:A6; B2:B6; LAMBDA(a; b;
LET(D; DIVIDIRTEXTO;
c; D(a;; " ");
UNIRCADENAS(" - ";; REPETIR(c; c = D(b; " ")))
)
))
`

Con BYROW + SUMA + ENFILA (Alejandro): construye una matriz booleana comparando cada palabra, suma por filas para identificar coincidencias, y filtra con ENFILA:

`
=MAP(A2:A6; B2:B6; LAMBDA(_a; _b;
UNIRCADENAS(" - "; 1;
ENFILA(
SI(BYROW(N(ENCOL(DIVIDIRTEXTO(_a; " ")) = DIVIDIRTEXTO(_b; " ")); SUMA);
ENCOL(DIVIDIRTEXTO(_a; " ")); z);
2
)
)
))
`

Con FILTRAR + COINCIDIRX (Gerson): filtra las palabras del primer texto quedándose solo con las que existen en el segundo, usando COINCIDIRX como test de existencia:

`
=MAP(A2:A6; B2:B6; LAMBDA(x; y;
LET(D; DIVIDIRTEXTO;
a; D(x; " ");
UNIRCADENAS(" - ";; FILTRAR(a; SI.ND(COINCIDIRX(a; D(y; " "));)))
)
))
``

Cada solución ilustra una filosofía distinta: comparación matricial (Leo), iteración por filas (Alejandro) y filtrado directo (Gerson). Un caso perfecto para ver cómo el mismo problema se puede atacar desde ángulos muy diferentes.

El reto

Un reto que empieza en LinkedIn y aterriza en el grupo: dadas dos columnas de frases, encontrar las palabras que aparecen en ambas. La comunidad respondió con un pequeño arsenal de funciones modernas, cada una con una filosofía distinta.

Enfoque 1: "perpendicularidad" (Leo)

La técnica estrella: dividir un texto por filas y el otro por columnas, de modo que al compararlos con = se genera una matriz de coincidencias. Donde hay cruce, esa palabra está en los dos textos. Leo lo envuelve en MAP para aplicarlo fila a fila:

`` =MAP(A2:A6; B2:B6; LAMBDA(a; b; LET(D; DIVIDIRTEXTO; c; D(a;; " "); UNIRCADENAS(" - ";; REPETIR(c; c = D(b; " "))) ) )) ``

DIVIDIRTEXTO parte cada frase en palabras; una versión desborda por columnas y la otra por filas. REPETIR(c; c = D(b;" ")) deja solo las palabras que coinciden, y UNIRCADENAS las une con un separador. Hay una variante equivalente con ENCOL que ignora los cruces fallidos.

Enfoque 2: BYROW + SUMA (Alejandro)

Alejandro parte de la misma matriz booleana, pero la resuelve por filas: compara cada palabra del primer texto con todas las del segundo, suma por filas con BYROW y SUMA para saber cuáles tienen al menos una coincidencia, y filtra el resultado con ENFILA. Es la lectura "cuenta cuántas veces aparece cada palabra en el otro texto y quédate con las que suman algo".

Enfoque 3: FILTRAR + COINCIDIRX (Gerson)

El más directo conceptualmente. Gerson divide el primer texto en palabras y usa COINCIDIRX como test de existencia contra el segundo: si la palabra existe, pasa el filtro; si no, SI.ND la descarta:

`` =MAP(A2:A6; B2:B6; LAMBDA(x; y; LET(D; DIVIDIRTEXTO; a; D(x; " "); UNIRCADENAS(" - ";; FILTRAR(a; SI.ND(COINCIDIRX(a; D(y; " "));))) ) )) ``

COINCIDIRX devuelve la posición si encuentra la palabra; SI.ND convierte los "no encontrado" en algo que FILTRAR descarta. Sin matrices intermedias: filtras directamente por existencia.

Funciones clave

  • DIVIDIRTEXTO: parte una frase en palabras, y puede desbordar por filas o por columnas según el argumento.
  • MAP y LAMBDA: aplican la lógica a cada par de celdas.
  • REPETIR y ENCOL: dejan solo las coincidencias en el enfoque matricial.
  • BYROW y SUMA: colapsan la matriz de comparación a un recuento por palabra.
  • FILTRAR y COINCIDIRX: el dúo del enfoque directo, usando la búsqueda como test de existencia.
  • UNIRCADENAS: reensambla las palabras comunes en un texto legible.

Conclusión

Comparación matricial (Leo), iteración por filas (Alejandro) o filtrado directo (Gerson): tres ángulos para el mismo problema. Si buscas brevedad, el enfoque de "perpendicularidad" con REPETIR es de los más elegantes; si buscas claridad, FILTRAR con COINCIDIRX se lee casi como una frase. Es exactamente el tipo de puzzle que la comunidad de Influexcel desmonta cada semana desde varios frentes a la vez.

Más contenido de Excel en InflueXcel