Buscar coincidencias y asignar

07/04/2008 - 16:44 por Luis | Informe spam
Qué tal foro! en lo posible quisiera que me ayuden con el siguiente
problemilla que se me ha presentado... En la Hoja1 dentro del Libro X
tengo una Base de 40 mil registros mmm con dos columnas que realmente
son las que me interesan: A y B, en la col A hay números que pueden
repetirse y en la B hay nombres de proveedores... algo así como (cada
columna en A y B respectivamente):

12214 Farmacia
12154 Laboratorio
21125 Imagen
12214 Cirugía
12214 Centro Médico
12123 Cirugía

Recuerden son 40000 registros, sucede que en la hoja2 tengo dos
columnas en la que a todos los prestadores que aparecen en la Hoja1 se
les ha asignado un código, más o menos así:

Centro médico A
Cirugía H
Farmacia A
Imagen A
Laboratorio H

Sucede que quisiera que cuando uno de los registros o números de la
Hoja1 col A tenga en la columna B un proveedor que en la Hoja2 tenga
un código "H" entonces todos los registros que tengan dicho número en
la Hoja1 col A tengan en la col B la misma letra "H", para nuestro
ejemplo sería algo así (asignando el código en la col C de la Hoja1):

12214 Farmacia H
12154 Laboratorio A
21125 Imagen A
12214 Cirugía H
12214 Centro Médico H
12123 Laboratorio H

He logrado hacerlo pero utilizando dos columnas, primero en la col C
de la Hoja1 asigno el código original asignado en la Col B de la Hoja2
con la formula:
=BUSCARV(B1,Hoja2!$A$1:$B$5,2,FALSO)
Y en la col D asigno el mismo código para aquellos números que posean
por lo menos un registro con la letra "H" en la col C con la siguiente
fórmula:
=SI(SUMAPRODUCTO(($A$1:$A$6¡)*($C$1:$C$6="H"))>0,"H","A")
y de esta manera logro mi objetivo, pero quisiera hacerlo todo en una
sola columna, aparte tengan cuenta que por la cantidad de registros el
proceso demora mucho cómo podría optimizarlo?, además qué sucede si en
la Hoja2 tengo más proveedores con otros códigos y quiero que con mi
fórmula continúe sucediendo lo mismo, es decir si por lo menos uno de
los números posee un código diferente a la letra "A", entonces que a
todos les asigne el mismo código?

Espero que hayan podido entenderme y gracias de antemano!

Saludos!

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
08/04/2008 - 07:07 | Informe spam
hola, Luis !

1) de acuerdo con tus indicaciones, la tabla-ejemplo que pones en tercer lugar (lo deseable), (aparentemente)...
contiene una incongruencia en el elemento en su segunda posicion: -> 12154 Laboratorio A
al quinto elemento de tu segunda tabla le corresponde el codigo H -> Laboratorio H

2) la situacion que buscas resolver tiene un requerimiento (muy similar a algo asi) como de...
-> "buscar sobre si mismo"... SIN llegar a ocasionar una referencia circular -?-

3) dejaremos de lado (de momento) el hecho de que hablamos de +/- 40000 registros (PERO... ???)
la siguiente formula matricial (ya sabes, de esas que al introducirlas/editarlas se confirman por ctrl+shift+enter)
esta preparada solamente para las 5 filas con "codigos" en la hoja2 y 6 filas con datos en la hoja1

[C1] =si(suma((hoja2!$a$1:$a$5=transponer($b$1:$b$6))*(hoja2!$b$1:$b$5="h")*(transponer($a$1:$a$6)¡)),"h","a")

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ la consulta original __
... En la Hoja1... tengo... 40 mil registros... con dos columnas que... son las que me interesan: A y B
en la col A hay numeros que pueden repetirse y en la B hay nombres de proveedores... algo asi
12214 Farmacia
12154 Laboratorio
21125 Imagen
12214 Cirugia
12214 Centro Medico
12123 Cirugia
... en la hoja2... a todos los prestadores que aparecen en la Hoja1 se les ha asignado un codigo, mas o menos asi:
Centro medico A
Cirugia H
Farmacia A
Imagen A
Laboratorio H
... quisiera que cuando uno de los registros o numeros de la Hoja1 col A
tenga en la columna B un proveedor que en la Hoja2 tenga un codigo "H"
entonces todos los registros que tengan dicho numero en la Hoja1 col A tengan en la col B la misma letra "H"
para nuestro ejemplo seria algo asi (asignando el codigo en la col C de la Hoja1):
12214 Farmacia H
12154 Laboratorio A
21125 Imagen A
12214 Cirugia H
12214 Centro Medico H
12123 Laboratorio H
He logrado hacerlo pero utilizando dos columnas, primero en la col C de la Hoja1
asigno el codigo original asignado en la Col B de la Hoja2 con la formula:
=BUSCARV(B1,Hoja2!$A$1:$B$5,2,FALSO)
Y en la col D asigno el mismo codigo para aquellos numeros que posean por lo menos un registro con la letra "H" en la col C
con la siguiente formula: =SI(SUMAPRODUCTO(($A$1:$A$6¡)*($C$1:$C$6="H"))>0,"H","A")
y de esta manera logro mi objetivo, pero quisiera hacerlo todo en una sola columna
aparte tengan cuenta que por la cantidad de registros el proceso demora mucho como podria optimizarlo?
ademas que sucede si en la Hoja2 tengo mas proveedores con otros codigos
y quiero que con mi formula continue sucediendo lo mismo
es decir si por lo menos uno de los numeros posee un codigo diferente a la letra "A"
entonces que a todos les asigne el mismo codigo?
Respuesta Responder a este mensaje
#2 Luis
08/04/2008 - 20:02 | Informe spam
Muchas Gracias por tu respuesta Héctor!

Tienes razón hubo un error en las tablas, las que correspondían eran
las siguientes:
(1)
12214 Farmacia
12154 Laboratorio
21125 Imagen
12214 Cirugía
12214 Centro Médico
12123 Laboratorio

(2)
Centro médico A
Cirugía H
Farmacia A
Imagen A
Laboratorio A

y (3)
12214 Farmacia H
12154 Laboratorio A
21125 Imagen A
12214 Cirugía H
12214 Centro Médico H
12123 Laboratorio A

La fórmula que me proporcionaste funciona perfecto, pero lamento
decirte que la segunda tabla se alimenta periódicamente con nuevos
proveedores y códigos, como podría que hacer que siga funcionando sin
importar la dimensión de esta segunda tabla??

Muchas Gracias de antemano!

Saludos!
Respuesta Responder a este mensaje
#3 Héctor Miguel
09/04/2008 - 04:13 | Informe spam
hola, Luis !

La formula... funciona... pero... la segunda tabla se alimenta periodicamente con nuevos proveedores y codigos
como podria que hacer que siga funcionando sin importar la dimension de esta segunda tabla?



definiendo nombres con formulas que hacen referencia a rangos "dinamicos" (o de/crecientes) p.e.
asumiendo que en la hoja2 los proveedores inician en la fila 1 de la columna A (SIN titulos NI filas vacias en el medio)
y las claves en la columna B, activa la hoja2 y...

1) (menu) insertar / nombre / definir...
2) nombre: (p.e.) Proveedores
3) en el campo "se refiere a": escribes la situiente formula
=desref($a$1,,,contara($a$a),)
(excel completara la formula con el nombre de la hoja
(OJO con el separador de argumentos, yo uso la coma)
4) define otro nombre (p.e.) Claves
5) en el campo "se refiere a:" escribes la siguiente formula
=desref(claves,,1)

de regreso en la hoja1, cambias la formula sugerida
de: -> =si(suma((hoja2!$a$1:$a$5=transponer($b$1:$b$6))*(hoja2!$b$1:$b$5="h")*(transponer($a$1:$a$6)¡)),"h","a")
a: -> =si(suma((proveedores=transponer($b$1:$b$6))*(claves="h")*(transponer($a$1:$a$6)¡)),"h","a")

saludos,
hector.
Respuesta Responder a este mensaje
#4 Luis
09/04/2008 - 18:02 | Informe spam
Excelente Héctor!!! Muchísimas Gracias por tu ayuda y paciencia!!


Saludos!!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida