Macro para generar un consolidado de varias hojas

Quisiera ayuda con una macro para poder generar un consolidado de un informe de varias hojas. La idea es que de un grupo de preguntas, solo algunas se aplican cada vez y tienen una descripción detallada del hallazgo, quiero pasar desde varias hojas a una sola que me consolide las preguntas que tienen hallazgo. Un asunto que me encontré es que algunas de mis preguntas tienen celdas combinadas y no me deja copiar la fila asociada. También me pregunto como se hace para que cada vez que se use la macro no queden filas del informe anterior en caso de que haya menos hallazgos o como se hace para que cuando se copia la información de la segunda, tercera, etc hoja, se pegue en la siguiente fila vacía que hay.

Podría hacerles llegar un archivo con ejemplo de la información que se manejaría en la macro.

Respuesta
1

No se entiende muy bien lo que hay que hacer exactamente. Mándame el fichero y veré a ver qué puedo hacer.

Mi correo es [email protected]

Pon como asunto el título de la pregunta. Y a ser posible ponle este título al fichero

MacroGenerarConsolidado.XLSM (o la terminación que tenga)

Te envío el archivo al correo, tiene el formato que necesito diligenciar y de donde saldría la información.

gracias por tu ayuda.

Adriana.

A ver si lo he entendido.

Tienes tres hojas con preguntas. Entonces quieres seleccionar las que tienen cierto rango de fechas y la letra S en la columna Hallazgos y llevarlas a la Hoja4. ¿Es eso?

¿Y qué hacemos después, las quitamos de la hoja donde están?

Y otra cosa. ¿Buscamos en una hoja cada vez, poniendo un botón de Buscar en cada hoja? ¿O con un mismo botón se busca en todas?

Yo no usaré los filtros ni autofiltros, estoy más hecho a la programación general que a la programación específica de Excel, lo haré bastante distinto de como lo tienes a lo mejor.

Con respecto a las que tienen S en la columna de hallazgos (esto puede cambiar cada vez que haga la evaluación), quiero copiar de las hojas 1, 2 y 3 solo las columnas que aparecen en la hoja4 sin que se borre la información de las otras hojas. El rango de fechas no se tiene en cuenta.

quisiera que fuera un botón "reporte" en la hoja4 que busque en todas las hojas (de hecho después de armada la macro quisiera poder incluirle más hojas, o más preguntas el que te envié es solo un extracto de mi archivo definitivo)

cualquier duda me cuentas.

gracias.

Vamos a ver. Entonces es pasar todos los datos de las hojas 1,2 y 3 a la hoja 4. Bueno, no se pasan todos sino solo las columnas en azul. ¿Es eso?

Es que veo algunas cosas raras. La hoja 1 y 2 tienen repetida la pregunta 11. Y en la hoja 4 no están las preguntas 20 y 21 de la hoja 2.

Por lo que dices cada vez que se ejecute la macro se escribe desde el principio de la hoja4. Si es así, lo primero que haremos será borrar los viejos y asi no quedarán anteriores.

También habría que dar un nombre especial y distinto a las hojas que se deben pasar para que la macro sepa cuáles son.

Confírmame si están bien las ideas que he dicho.

Sí, se pasan solo las columnas seleccionadas de las hojas 1, 2 y 3 a la hoja 4.

Haz caso omiso al número de la pregunta, cada hoja tiene preguntas diferentes y no se repiten entre ellas (me quedó igual para el ejemplo por error). En la hoja 4 solo deberán aparecer las preguntas que tengan S en la columna de Hallazgo, si las preguntas 20 y 21 tienen S deberán aparecer (si tienen S en el archivo que te envié, por error de pronto no quedaron en la hoja 4).

Sí, la idea es que yo corro la macro para generar un reporte consolidado nuevo después de responder todas las preguntas, y en el consolidado yo solo necesito que me salgan las preguntas que tuvieron un hallazgo en su evaluación.

En cuanto al nombre de las hojas, en mi archivo yo a cada hoja le tengo un nombre específico (1_TCo, 2_TCo, 3_TCo...), pero con especial te refieres a algo más?

Gracias

Bueno te voy a mandar lo que he hecho.

Las celdas combinadas suponen un problema para varias cosas. Entre ellas el problema este que puede darse al copiar. Si pudieses prescindir de ellas habría menos problemas en esto y otras operaciones que se puedan hacer.

De todas formas creo que lo he resuelto. La macro se llama Reporte y crea el reporte consolidado en la hoja Reporte.

A las hojas con datos les he puesto nombre como decías. Las hojas que quieras consolidar deberán tener la cadena "_TCo" en su nombre para que sean procesadas.

He guardado el código de hacerlo parecido a como querías tú por si puedes arreglarlo, yo no he podido y lo he hecho a mi manera.

Puede que haya algún detalle que puedas mejorar como algún CutCopyMode que falte.

Ahora te mando el fichero.

Gracias por el archivo, estoy tratando de ajustarla a mi archivo definitivo. ha sido de mucha ayuda, te estaré contando como me va.

Todo va marchando super bien, te quería preguntar que instrucción uso para que en la columna A me vaya numerando cada fila que se va copiando, pero contabilizando las que están combinadas como una sola (que cuente uno y que se salte las demás o algo así..), probé esta Range("B" & FilaInsercion) = FilaInsercion - 15, pero no se salta las que están combinadas (y pueden estar combinadas de a dos, tres, cuatro...).

Lo otro que quisiera es que se borre solo el contenido de las filas no todo el formato, ya que hay algunas columnas (A, I, J) que no se copian de las otras hojas, I y J se diligencian directamente en la hoja de Reporte y es mejor que quede la cuadrícula y unos formatos condicionales que le voy a poner, que cambio debería hacer para esto?

Gracias!!! :)

El problema de las celdas combinadas y el pegado especial no es moco de pavo. Y menos tal como lo tienes que en dos filas tienes algunas columnas combinadas y otras no.

Si te fijas bien, la macro ha quitado la combinación de celdas, y lo ha hecho sin que yo se lo dijera.

Un programa que respete las celdas combinadas sería posible porque todo es posible (o casi todo) pero sería complicado y no lo he hecho nunca. El que lleve la numeración de filas contando solo 1 por las combinadas es un problema parecido al anterior.

El borrar todo creo que lo hice porque si no quedaban líneas que luego quedaban mal.

En la línea

ActiveSheet.Range("A4", "J" & UltimaFila). Clear

Si pones delete en vez de Clear borrarás solo los datos.

Y el rango lo puedes modificar, poniendo

ActiveSheet.Range ("B4","H" & UltimaFila). Clear

No borraras nada de esas columnas.

El intento de hacer el pegado especial de columnas combinadas ya te he dicho la dificultad que le veo. Solo lo intentaría y no se si lo voy a conseguir, si fuese en una pregunta nueva después de puntuar esta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas