Saltar al contenido

Copiar celdas omitiendo las vacias


kevinloko

Recommended Posts

publicado

Estimados, ante todo muchas gracias. Soy nuevo en este mundo tan interezante de los Macros y estoy teniando algunos problemas a la hora de escribir uno para realizar la tarea siguiente:

Tengo en un mismo libro las hojas: Hoja1, Hoja2 y Hoja3

En Hoja1 tengo 3 columnas (A,B y C). La columna A y B estan completas (todas sus celdas tienen valores-nombres) pero la columna C posee solo algunas celdas con información.

Entonces, necesito un macro que busque en la columna C las celdas que continen valores (omitiendo las celdas sin valores)y los pegue en la Hoja2 en conjunto con la informacion de las celdas B y A correspondientes.

Alguna solucion sencilla por ahi?

Muchas gracias!

publicado

Bueno, ahí tienes una primera versión......

Le he puesto un cuadro de texto para que puedas ejecutar fácilmente la macro pulsando en él.......

El código está pensado para realizar lo que pedías........lo que no sé es si necesitarías ejecutar en varias ocasiones el código y por ello, sería necesario eliminar/actualizar la información de la Hoja2.........

En fin, prueba y me cuentas.......

Un saludo,

Tese

Ejemplo consulta_Tesev1.rar

publicado

Tese, primero que nada... Sos un groso!! jaja, muchas gracias por tu pronta respuesta!! lamentablemente tengo que molestarte otra vez. Resulta que no me expliqué bien en un principio y necesitaría que el macro también siga haciendo la misma operación columna tras columna. (esto es porque en el documento original tengo varios ''datos'' para el mismo ''nombre'' que necesito también se copien.

Ademas, puedo consultarte sobre algunas cosas que escribís en el macro? así de esa manera puedo consultar cosas mas puntuales para aprender mas rápido.

Saludos! y muchas gracias!

- - - - - Mensaje combinado - - - - -

Respecto a las consultas, si no te molesta podrías agregarle comentarios a las líneas para que yo pueda googlear con mejor referencia lo que estas intentando hacer? de esa manera te molesto menos....

Gracias nuevamente!

publicado

Disculpa, kevinloko, pero no termino de entender a qué te refieres con hacer la misma operación columna tras columna....

Intenta explicarte con más detalle ó vuelve a subir el archivo con alguna explicación o ejemplo de lo que necesitas......

Un saludo,

Tese

publicado

Estimado, adjunto lo que sería mas concretamente el archivo con el formato que estoy utilizando. Lo que necesito es lo siguiente:

Al encontrar una fecha en las columnas de ''información requerida1'' ''información requerida2'' e ''información requerida3''(omitiendo todas las celdas vacías , necesito que se copien las columnas correspondientes a ''nombre'', ''field'' ''información requerida'' y ''fecha'' (la misma que encuentra en cada ''información requerida'') en las columnas con esos mismos nombres en la hoja ''PLANILLA FINAL''.

Espero ser claro en lo que necesito...

Gracias tese!!

EJEMPLO.rar

publicado

Tengo varias dudas, kevinloko......

¿Puede haber fechas en información requerida 2 ó 3 sin haberlas en información requerida1?

¿Los campos relacionados con medición no los incluyes?

Por favor, rellena tú mismo la hoja planilla final con el ejemplo......... e incluye algunas fechas en información requerida2 y 3......para ver como quedaría!!!

Chao,

Tese

publicado

Tese, disculpa si no fui claro desde un primer momento. Aquí adjunto el archivo con los campos como quedarían en la versión final. Paso a explicar paso por paso lo que necesito que haga el macro.

El macro debería recorrer todas las columnas entre la ''I'' y la ''AQ'' (no agregué todas las columnas para simplificar, pero seguirán el mismo formato que las que se muestran en el ejemplo). Al recorrerlas debería verificar si existen celdas con fechas para realizar el copiado de los datos. Por ejemplo, en primera instancia recorre la columna I y al encontrarse con la primer fecha (omitiendo celdas vacías) tendría que copiar en la hoja ''PLANILLA FINAL'' los campos que ya he completado a mano en el archivo ejemplo, es decir: ''nombre'', ''field'', ''información requerida 1'' (que vendría a ser el título de la columna y cambia a partir de la columna M), y finalmente ''fecha''.

Luego entonces pasa a la siguiente columna (columna J) y comienza a hacer lo mismo que en la columna I, verificando que existan fechas para copiar los datos mencionados anteriormente.

Entonces, puede que no hayan datos en algunas columnas y, por ende, el macro debería ser capaz de saltar esa columna sin datos y pasar a la siguiente.

Notar que seguramente en ''PLANILLA FINAL'' quedarán nombres o fechas repetidas en las columnas, lo cual esta bien y es intencional.

Tese, gracias por la paciencia! espero haber sido claro esta vez.

Saludos!

EJEMPLO2.rar

publicado

Buenas, kevinloko......

Supuestamente ya está implementada la funcionalidad que solicitabas.......pruébala...........y cuentas...

He tenido que tirar de ingenio para dar respuesta y solución a tus casillas combinadas "INFORMACIÓN REQUERIDA1"...etc....para que pudiera captar el valor..........Piensa que la primera columna lo haría sin problemas.......pues la celda combinada queda como "I1".......pero simplemente en la columna "J" no puedes utilizar la misma referencia....porque ese valor no está en "J1".....

Qué se me ha ocurrido?........Pues una vez que está activa la celda que estamos comprobando.......si ésta no está vacía, que vaya subiendo una a una hasta que encuentre una que se llame algo así como "*INFORM*"........De esa manera sí que llega a la primera fila y recoge el valor de la celda combinada......después volvemos a la celda activa "origen" (hemos guardado previamente su posición en una variable)....y el resto es historia.........jejejeje

Sólo espero que el resto de columnas que no has incluido siga el mismo formato de nombre......si no es así habría que modificarlo.........

Y como consejo general........si vas a utilizar determinadas celdas como información, no debes combinarlas.......

A ver si se va acercando a lo que necesitabas......

Un saludo,

Tese

EJEMPLO2_Tesev2.rar

publicado

Tese, realmente admiro el trabajo que has hecho! pero lamentablemente debo decir que la funcionalidad que has incorporado para buscar la palabra INFORM* no me sirve :S. El hecho es que esas celdas (las de INFORMACION REQUERIDA 1, 2, 3 etc..) cambiarán de nombre (puesto que corresponden a distintas actividades que irán cambiando mes a mes), por lo que en realidad necesitaría que el macro coloque el nombre de esa celda combinada donde corresponde en la hoja PLANILLA FINAL siempre y cuando detecte que en las celdas inferiores a la misma contienen fechas.

Es decir, el macro que has hecho esta genial, funciona a la perfección, solo necesito que en lugar de buscar la palabra INFORM* buque la celda combinada superior para colocar ese valor en la celda E de la hoja PLANILLA FINAL.

Se que estoy pidiendo mucho ya, pero si no te molesta sería realmente provechoso para mi (y para cualquiera que consulte el foro) si puedes agregar comentarios a lo que has programado. De es manera puedo saber lo que haces y estudiar mejor como funcionan las lineas que has escrito.

Nuevamente muchísimas gracias por tu ayuda y tiempo!

publicado

Buenas, Kevinloko.....

Pues al final ha sido aún más fácil que hacerlo de la otra manera!!!.....jejejeje......He modificado 4 líneas por 1........por tanto, ahorro de código.....jejeje

Lo que hará será coger el valor de la primera línea, sea cual sea el texto........

He puesto yo en el ejemplo otro grupo de columnas para probarlo y en principio, lo hace bien.....

Pruébalo tú........

Un saludo,

Tese

EJEMPLO2_Tesev3.rar

publicado

Tese! funciona a la perfección!! es justo lo que necesitaba! muchas gracias!

Pd.: insisto con otra cosa, es mucha molestia que me agregues algun comentario a las líneas de programación para que puede hacer un seguimiento de lo que hacen? asi voy aprendiendo y buscando mas información...

Nuevamente, muchísimas gracias!! te pasaste!!

publicado

Me alegro de que te haya servido, kevinloko...

Recuerda dar el tema por finalizado, escribiendo algo así como "Tema Solucionado", para que los administradores puedan cerrarlo.

Por cierto, lo siento, pero este foro no tiene, según mi entender, carácter formativo, sino de consulta......y no creo que sea buena idea modificar esto........

Si buscas en google así por encima ya verás como entiendes mi código muy fácilmente.......no tiene secretos.....al final, lo importante es tener el concepto de cómo organizar la estructura.........el resto, es más rutinario.....

Chao,

Tese

publicado

Tese, te consulto una última cosa... Veo en el macro que no has definido las variables "n" ni "siguiente". Esto como lo toma el excel? Es necesario poner option explicit en el encabezado del macro?

Tema solucionado! muchas gracias!

publicado

Sí están definidas, aunque no se haya utilizado el habitual "Dim"......

Con


siguiente = 2
[/CODE]

ya le estás diciendo el valor que tiene....

Y en el caso de n......cuando escribes:

[CODE]
For Each n In Range("a3:a5000")
[/CODE]

también le estás diciendo que es un Range (Rango)

Chao,

Tese

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.