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.MAPyLAMBDA: aplican la lógica a cada par de celdas.REPETIRyENCOL: dejan solo las coincidencias en el enfoque matricial.BYROWySUMA: colapsan la matriz de comparación a un recuento por palabra.FILTRARyCOINCIDIRX: 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
- Cuenta clientes y cervezas en Excel 🍺 Caso "La Taberna: El Poney Pisador" (Nivel 1) Tutorial🍺 Noche cerrada en Bree. Frodo, Sam, Merry y Pippin cruzan la puerta de El Poney Pisador huyendo de los Jinetes Negros: la sala está a reven
- SUMAR.SI.CONJUNTO en acción con El Señor de los Anillos 🃏 El 21 de La Comarca TutorialLo que practicamos en este caso: • Contar cartas por palo con CONTAR.SI • Sumar valores con condiciones (SUMAR.SI / SUMAR.SI.CONJUNTO) • Apl
- Reto de Excel: El cumpleaños de Bilbo 🎂 | CONTAR.SI y SUMAR.SI desde cero (Nivel 1) TutorialEn La Comarca se celebra el cumpleaños número 111 de Bilbo Bolsón: cerveza, pasteles, fuegos artificiales… y algún curioso escondido tras el
- ¡Excel PowerQuery Hack! Conexiones con rutas relativas en 10 minutos! Tutorial¿Harto de ajustar las conexiones en PowerQuery cada vez que compartes tu archivo de Excel? 🙄 Convierte las conexiones de PowerQuery con ruta
- Mejora un 90% el rendimiento de Power Query con SQLite TutorialPower Query es una herramienta potente para consolidar, combinar y calcular datos, pero cuando trabajamos con millones de registros y calcul
- Reorganizar tablas mensuales: cruzar por persona buscando en vertical y en horizontal CasoNuevo caso interesante de la comunidad. Juan tenía varias tablas mensuales (a veces más de una en el mismo mes) y quería reorganizarlas por
- Un dato de todas las hojas, escrito una sola vez CasoEsta semana surgió en la comunidad un reto muy habitual cuando un libro tiene muchas hojas: mostrar el valor de la celda B3 de cada hoja, in
- Un índice de hojas que se genera solo: HYPERLINK en rangos desbordados CasoEsta semana surgió en la comunidad un pequeño "expediente X". Un miembro llegó tras ver un vídeo con una idea clara en la cabeza: montar una
- Reformatear un código alfanumérico al teclear: de NN1234567 a NN-12345-67 CasoEsta semana surgió en la comunidad una duda muy práctica: cómo conseguir que al escribir un código tipo NN1234567 (dos letras seguidas de si
- Reclasificación contable: duplicar cada fila con una conversión distinta por columna, en un único bloque CasoInteresante reto contable planteado esta semana por un miembro de la comunidad. Juan parte de una tabla de apuntes contables (rango C7:P10)