Relleno Dinamico de Celdas

6 envíos / 0 nuevos
Último envío
eduboca82
Imagen de eduboca82
Offline
última acción: Hace 11 años 8 meses
alta: 05/12/2007 - 21:21
Puntos: 90
Relleno Dinamico de Celdas
Buenas Tardes, Tengo un problema porque siempre me llega un archivo con una lista de numeros de productos ( que varian entre 30 y 60 mil codigos). El problema es que quiero generar un macro que automaticamente a traves de un vlookup, busque el nombre de esos productos; pero quiero que copie y pegue la formula del vlookup pero en la cantidad exacta de celdas que trae el archivo. Por ejemplo si me llegan el archivo con 30000 codigos; quiero que haga 30000 vlookups y si me llegan 50000 codigos que automaticamente haga unos 50000 vlookups. Agradezco de antemano tu ayuda con esto ya que me sera de gran utilidad. Salu2. Edú.
pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 17 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 10530
Autorrellenar
Si utilizas la versión 2007, tienes la posibilidad de que Excel considere todos los datos como un conjunto, convirtiéndolo en lo que llama una tabla. Si los datos son una tabla y añades una fórmula en una celda a la derecha, esta fórmula se aplica a los 30000 valores que componen la tabla. Si modificas la fórmula, se modifica para todos los datos. En la versión 2003 hay algo parecido, que entoces llamaron "lista", pero esto de las fórmulas no funciona automáticamente como en la 2007. Otra posibilidad es el autorrelleno de fórmulas. Si escribes el valor en la primera celda, a la izquierda de donde tienes los datos, y haces doble clic sobre la esquina inferior derecha de la celda (cuando el puntero del ratón toma la forma de una cruz negra), la fórmula se extiende hacia abajo a todas las celdas que tengan información a su izquierda. Esto mismo se puede programar en una macro con el método .AutoFill aplicado a la celda que contiene la fórmula a extender, y con un argumento Destination que indique el rango al que se va a aplicar la fórmula. Sólo tendrías que detectar el tamaño del rango al que aplicar la fórmula, por ejemplo, si en la primera columna tienes la relación de códigos, con estas instrucciones seleccionarías todos los códigos: Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Si la fórmula la quieres aplicar dos columnas hacia la derecha, el rango que quieres rellenar con fórmulas puede ser: Selection.Offset(0,2) Espero que estas ideas te sean de utilidad.

 

Data Tools Suite
datos y tablas con Excel

eduboca82
Imagen de eduboca82
Offline
última acción: Hace 11 años 8 meses
alta: 05/12/2007 - 21:21
Puntos: 90
Re: Autorrellenar
Paco, Lamentablemente yo cuento con la version 2003 de Excel, asi que descarto la primera opcion. En cuanto a la segunda posibilidad es la que estoy tratando de aplicar pero el problema es que en el argumento Destination no puedo indicar un rango fijo (por ej A1:A30000) porque nunca se cuanto va a ser la cantidad exacta de codigos que voy a recibir. En este caso que tendria que poner como dentro del rango de destination para que automaticamente seleccione el rango correspondiente al n° exacto de codigos? Te agradezco de nuevo toda tu ayuda ya que son de mucha utilidad. Edú
Edú
pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 17 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 10530
Re: Relleno Dinamico de Celdas
Piensa en cómo seleccionarías todas las celdas con código a mano. Yo me situaría en la primera celda con un código, y luego pulsaría [Mays][Fin][flecha hacia abajo] para seleccionar todas las celdas que tengan contenido debajo de la primera. Esto, en una macro, se haría así: Range(primeraceldaconcodigo).Select Range(Selection, Selection.End(xlDown)).Select Luego puedes utilizar esta selección para obtener el rango de destino, bien mediante Offset, como te indicaba antes, o bien obteniendo el número de filas seleccionadas para utilizarlo en un bucle, por ejemplo numeroFilasSeleccionadas = Selection.Rows.Count un saludo.

 

Data Tools Suite
datos y tablas con Excel

eduboca82
Imagen de eduboca82
Offline
última acción: Hace 11 años 8 meses
alta: 05/12/2007 - 21:21
Puntos: 90
Re: Relleno Dinamico de Celdas
Muchisimas gracias Paco!!.. ya lo pude hacer como me dijiste con el Offset... la verdad que no sabia como funcionaba ese comando pero ya lo pude aplicar y la verdad que me sirvio muchisimo... Una vez mas te agradezco tu apoyo y como ultima molestia, te pregunto si habra alguna forma de ocultar todos los calculos que realiza la macro para que no se vea todo el proceso mientras corre la misma (por ej: cuando calcula los vlookups o cuando inserta subtotales,abre o cierra libros, etc etc); porque en mi maquina la macro dura como 10 minutos. SAlu2!! Edú
Edú
pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 17 horas
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 10530
ScreenUpdating
para que todo el proceso de la macro no haga que Excel empiece a dar pantallazos, y para que la macro se ejecute más deprisa, puedes desactivar la actualización de la pantalla durante la ejecución de la misma. Esto se consigue con Application.ScreenUpdating = False ponlo al principio de tu macro y verás qué diferencia. un saludo.

 

Data Tools Suite
datos y tablas con Excel