Buscar un texto, dentro cadenas de texto y en dos columna de diferente rango.

03/06/2006 - 09:43 por Kanduleitor | Informe spam
Buenas. El problema es el siguiente
Quiero comparar el texto exacto (mayusculas, minusculas, acentos,
espacios en blanco) de las celdas que pertenece a la columna (C1:C27)
mas pequeña. Con una columna (A1:A1000) mas grande, en la cual hay
celdas que tienen el contenido exacto de la celda que pertenece a la
columna (C1:C27) dentro de la cadena de texto que pertenece a la celda
de la columna "A".

A B C
_Pépé Ok ECa mión
Pépe NO Ok pepe
ECa mión Ok Pépé
XX uno_ NO Ok jejeje
qwert NO OK
jeje NO OK
jéjéjé NO OK
jejeje OK
pepe_h OK

Lo he intentado con casi dotas las funciones de texto, buscar,
encontrar pero lo unico que he podido es comparar una celda con otra a
la vez. Pero no una celda con una matriz.
en la celda lo he conseguido con:
=SI(ESERROR(ENCONTRAR(C1;A1));"NO OK";"OK")

Con las formulas matriciales no he podido diferenciar acentos,
mayusculas...
No se utilizar las macros... pero si no hay otro remedio
aprenderemos...

Gracias a todos.

Preguntas similare

Leer las respuestas

#1 KL
03/06/2006 - 15:27 | Informe spam
Hola Kanduleitor,

Pues es justo lo que yo sospechaba, pero tu ejemplo inicial no encajaba del todo con la descripcion que ponias (no recogia los casos de texto buscado dentro de otras cadenas de texto) - las tres formulas propuestas por HM y KL devolvian exactamente los resultados que exponias para tu ejemplo.

Ahora bien, vistas tus nuevas aclaraciones podrias probar las siguientes formulas:

=SI(A1="";"";SI(SUMAPRODUCTO(--ESNUMERO(ENCONTRAR(A1;$C$1:$C$1000)));"OK";"NO OK"))
distingue entre mayusculas y minusculas, pero lenta: 2.389,76 milisegundos en 1.000 filas

=SI(A1="";"";SI(ESNUMERO(COINCIDIR("*"&A1&"*";$C$1:$C$1000;0));"OK";"NO OK"))
no distingue entre mayusculas y minusculas (ya se que no es lo que andas buscando, pero por si la moscas), pero rapida: 200,39 milisegundos en 1.000 filas

Saludos,
KL


"Kanduleitor" wrote in message news:
Buenas. El problema es el siguiente
Quiero comparar el texto exacto (mayusculas, minusculas, acentos,
espacios en blanco) de las celdas que pertenece a la columna (C1:C27)
mas pequeña. Con una columna (A1:A1000) mas grande, en la cual hay
celdas que tienen el contenido exacto de la celda que pertenece a la
columna (C1:C27) dentro de la cadena de texto que pertenece a la celda
de la columna "A".

A B C
_Pépé Ok ECa mión
Pépe NO Ok pepe
ECa mión Ok Pépé
XX uno_ NO Ok jejeje
qwert NO OK
jeje NO OK
jéjéjé NO OK
jejeje OK
pepe_h OK

Lo he intentado con casi dotas las funciones de texto, buscar,
encontrar pero lo unico que he podido es comparar una celda con otra a
la vez. Pero no una celda con una matriz.
en la celda lo he conseguido con:
=SI(ESERROR(ENCONTRAR(C1;A1));"NO OK";"OK")

Con las formulas matriciales no he podido diferenciar acentos,
mayusculas...
No se utilizar las macros... pero si no hay otro remedio
aprenderemos...

Gracias a todos.
Respuesta Responder a este mensaje
#2 Kanduleitor
03/06/2006 - 20:30 | Informe spam
Gracias KL y perdona si no me he sabido explicar bien desde el
principio.

La segunda formula que no distingue entre mayusculas y minusculas no me
vale y la otra que si distingue mayusculas y minusculas
=SI(A1="";"";SI(SUMAPRODUCTO(--ESNUMERO(ENCONTRAR(A1;$C$1:$C$1000)));"OK";"NO
OK"))
no funciona en la busqueda del texto dentro de la cadena de texto.

Me explico.
La columna A es de 1000 celdas y en la cadena de texto de ellas esta un
trozo de texto que coincide con una de las 27 celdas que contiene la
columna C

Ejemplo de un OK en la formula.
A1000=Esto es una pruebÁÁÁÁ xyxyxy
C27=s una pruebÁÁÁÁ xy

C27 esta el texto integro dentro de A1000 por lo tanto es OK.

Gracias KL por tu tiempo.
Kanduleitor



KL ha escrito:
Pues es justo lo que yo sospechaba, pero tu ejemplo inicial no encajaba del todo con la descripcion que ponias (no recogia los casos de texto buscado dentro de otras cadenas de texto) - las tres formulas propuestas por HM y KL devolvian exactamente los resultados que exponias para tu ejemplo.

Ahora bien, vistas tus nuevas aclaraciones podrias probar las siguientes formulas:

=SI(A1="";"";SI(SUMAPRODUCTO(--ESNUMERO(ENCONTRAR(A1;$C$1:$C$1000)));"OK";"NO OK"))
distingue entre mayusculas y minusculas, pero lenta: 2.389,76 milisegundos en 1.000 filas

=SI(A1="";"";SI(ESNUMERO(COINCIDIR("*"&A1&"*";$C$1:$C$1000;0));"OK";"NO OK"))
no distingue entre mayusculas y minusculas (ya se que no es lo que andas buscando, pero por si la moscas), pero rapida: 200,39 milisegundos en 1.000 filas
Saludos,
KL
Respuesta Responder a este mensaje
#3 Héctor Miguel
03/06/2006 - 21:32 | Informe spam
hola, chicos !

considerando que [como dice OP]...
1) 'La formula es para un amigo que se va ha quedar cieguito pronto si sigue buscando las diferencias a ojo en las miles de celdas'
2) el contenido de 'A1:A1000' pudiera encontrarse SOLO PARCIAL(pero... EXACTA)MENTE en el rango 'C1:C27'
3) usar ~1000 formulas pudiera significar un 'cierto tiempo desperdiciado' en los re/calculos del modelo :))

a) puedes 'olvidarte' de usar las ~1000 formulas [y obviamente del desperdicio del tiempo] :)) SI...
b) sustituyes las formulas -> por formatos condicionales [con algunas ventajas adicionales] ;)

[primero]: selecciona el rango 'a_buscar_donde' [A1:A1000] y estando 'A1' como celda 'activa'...
[despues]: ve a [menu] formato / formato condicional...
a) condicion1 -> formula
b) formula: -> =max(--esnumero(encontrar($c$1:$c$27;a1)))>0
c) [boton] formato... -> aplica los formatos de tu preferencia para una 'identificacion VISUAL' -> de las coincidencias

notas:
1) si usaras 'la formula' [como 'normalmente' se usaria] EN CELDAS, tendria que ser de 'entrada matricial' [ctrl+mayus+enter]
[solo que entre las ventajas de los formatos condicionales esta la 'auto-presuncion' de formulas 'matriciales'] ;)
2) si la hoja NO contiene NINGUNA formula 'extra o adicional'... [en las pruebas no utilice ninguna] ;)
las ~1000 celdas con formatos condicionales 'se toman' los siguientes tiempos en el re/calculo...
a) calculo 'en automatico': -> 4.33 milisegundos
b) calculo 'en manual' -> 0.13 milisegundos

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ mensajes anteriores __
KL escribio en el mensaje ...
... tu ejemplo inicial no encajaba del todo con la descripcion que ponias
... las tres formulas propuestas por HM y KL devolvian exactamente los resultados que exponias para tu ejemplo.
... vistas tus nuevas aclaraciones podrias probar las siguientes formulas:
=SI(A1="";"";SI(SUMAPRODUCTO(--ESNUMERO(ENCONTRAR(A1;$C$1:$C$1000)));"OK";"NO OK"))
distingue entre mayusculas y minusculas, pero lenta: 2.389,76 milisegundos en 1.000 filas
=SI(A1="";"";SI(ESNUMERO(COINCIDIR("*"&A1&"*";$C$1:$C$1000;0));"OK";"NO OK"))
no distingue entre mayusculas y minusculas (... por si la moscas), pero rapida: 200,39 milisegundos en 1.000 filas

Kanduleitor escribio en el mensaje ...
... si no me he sabido explicar bien desde el principio.
La segunda formula que no distingue entre mayusculas y minusculas no me vale y la otra que si distingue mayusculas y minusculas
=SI(A1="";"";SI(SUMAPRODUCTO(--ESNUMERO(ENCONTRAR(A1;$C$1:$C$1000)));"OK";"NO OK"))
no funciona en la busqueda del texto dentro de la cadena de texto.
... columna A... 1000 celdas y en... ellas esta un trozo de texto que coincide con una de las 27 celdas... columna C
Ejemplo de un OK en la formula. A1000=Esto es una pruebÁÁÁÁ xyxyxy C27=s una pruebÁÁÁÁ xy
C27 esta el texto integro dentro de A1000 por lo tanto es OK.
Respuesta Responder a este mensaje
#4 Kanduleitor
03/06/2006 - 21:58 | Informe spam
Hola Héctor funciona a la perfección
Una forma muy elegante de resolver el problema.

El cieguito y yo os damos las gracias a ti Hécto y KL por la ayuda...
miles de gracias.

Kanduleitor.



Héctor Miguel ha escrito:

hola, chicos !

considerando que [como dice OP]...
1) 'La formula es para un amigo que se va ha quedar cieguito pronto si sigue buscando las diferencias a ojo en las miles de celdas'
2) el contenido de 'A1:A1000' pudiera encontrarse SOLO PARCIAL(pero... EXACTA)MENTE en el rango 'C1:C27'
3) usar ~1000 formulas pudiera significar un 'cierto tiempo desperdiciado' en los re/calculos del modelo :))

a) puedes 'olvidarte' de usar las ~1000 formulas [y obviamente del desperdicio del tiempo] :)) SI...
b) sustituyes las formulas -> por formatos condicionales [con algunas ventajas adicionales] ;)

[primero]: selecciona el rango 'a_buscar_donde' [A1:A1000] y estando 'A1' como celda 'activa'...
[despues]: ve a [menu] formato / formato condicional...
a) condicion1 -> formula
b) formula: -> =max(--esnumero(encontrar($c$1:$c$27;a1)))>0
c) [boton] formato... -> aplica los formatos de tu preferencia para una 'identificacion VISUAL' -> de las coincidencias

notas:
1) si usaras 'la formula' [como 'normalmente' se usaria] EN CELDAS, tendria que ser de 'entrada matricial' [ctrl+mayus+enter]
[solo que entre las ventajas de los formatos condicionales esta la 'auto-presuncion' de formulas 'matriciales'] ;)
2) si la hoja NO contiene NINGUNA formula 'extra o adicional'... [en las pruebas no utilice ninguna] ;)
las ~1000 celdas con formatos condicionales 'se toman' los siguientes tiempos en el re/calculo...
a) calculo 'en automatico': -> 4.33 milisegundos
b) calculo 'en manual' -> 0.13 milisegundos

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#5 KL
03/06/2006 - 22:16 | Informe spam
Hola Kanduleitor,

Perdon te habia entendido que es la celda [A1] que se busca dentro de las cadenas de texto en la columna [C:C] y no la [C1] en la [A:A].

Por cierto la formula de HM que usa en el formato condicional:

=max(--esnumero(encontrar($c$1:$c$27;a1)))>0

creo que se puede depurar un pelin (pero no lo he probado):

=o(esnumero(encontrar($c$1:$c$27;a1)))

Saludos,
KL


"Kanduleitor" wrote in message news:
Hola Héctor funciona a la perfección
Una forma muy elegante de resolver el problema.

El cieguito y yo os damos las gracias a ti Hécto y KL por la ayuda...
miles de gracias.

Kanduleitor.



Héctor Miguel ha escrito:

hola, chicos !

considerando que [como dice OP]...
1) 'La formula es para un amigo que se va ha quedar cieguito pronto si sigue buscando las diferencias a ojo en las miles de celdas'
2) el contenido de 'A1:A1000' pudiera encontrarse SOLO PARCIAL(pero... EXACTA)MENTE en el rango 'C1:C27'
3) usar ~1000 formulas pudiera significar un 'cierto tiempo desperdiciado' en los re/calculos del modelo :))

a) puedes 'olvidarte' de usar las ~1000 formulas [y obviamente del desperdicio del tiempo] :)) SI...
b) sustituyes las formulas -> por formatos condicionales [con algunas ventajas adicionales] ;)

[primero]: selecciona el rango 'a_buscar_donde' [A1:A1000] y estando 'A1' como celda 'activa'...
[despues]: ve a [menu] formato / formato condicional...
a) condicion1 -> formula
b) formula: -> =max(--esnumero(encontrar($c$1:$c$27;a1)))>0
c) [boton] formato... -> aplica los formatos de tu preferencia para una 'identificacion VISUAL' -> de las coincidencias

notas:
1) si usaras 'la formula' [como 'normalmente' se usaria] EN CELDAS, tendria que ser de 'entrada matricial' [ctrl+mayus+enter]
[solo que entre las ventajas de los formatos condicionales esta la 'auto-presuncion' de formulas 'matriciales'] ;)
2) si la hoja NO contiene NINGUNA formula 'extra o adicional'... [en las pruebas no utilice ninguna] ;)
las ~1000 celdas con formatos condicionales 'se toman' los siguientes tiempos en el re/calculo...
a) calculo 'en automatico': -> 4.33 milisegundos
b) calculo 'en manual' -> 0.13 milisegundos

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida