Muchísimas gracias Dante!!!!
La macro me funciona para la tabla 3 pero no para la tabla 1, no me copia ningún dato, ¿por qué?
Si no te importa voy a repasar los pasas de la macro para ir planteándote las dudas que me han surgido al verla, a ver si estoy en lo cierto y puedo diseñarla yo para el resto de tablas del documento...
1) Con la función "set" defines cada unas tablas con datos que vas a utilizar.
2) Con la instrucción "limpiar hojas" defines el rango de valores de cada una de las tablas de destino, en este caso has puesto solo de la C a la D porque tenemos pendiente que te explique como copiar la columna de "horas". Por otro lado, el nº que indicas en la primera letra corresponde a la fila en la que empieza la tabla.
3) Con la instrucción "leer tabla1 de la hoja "no tocar_1"" defines unos rangos con las letras "i" y "j", pero no entiendo qué significan y por qué indicas los números 20 y 6. Luego le dices que mientras que haya valores en la columna E te haga lo siguiente... El valor de la columna C en la tabla 1 es igual al valor de la columna E en la hoja no tocar_1; y luego que el valor de la columna D en la tabla 1 es igual al valor de la columna H en la hoja no tocar_1. Después le dices "j=j+1 e i=i+1" y eso tampoco sé lo que significa...
4) Con la instrucción "leer tabla 3 de la hoja "no tocar_1"" solo pones el valor de "j", y no se porqué... Introduces una función set donde defines el rango de valores donde tiene que buscar "tabla 3" y hacer lo siguiente que indicas: copiar valores de una columna a otra como el caso anterior y siguiendo las premisas que te pedí. Pero, ¿qué significa "i = b.Row + 1"? Y finalizas el bucle con la función else.
Por tanto, tengo 3 dudas principales: a) ¿qué significan las letras "j" e "i", supongo que para definir rangos? ¿La instrucción "i = b.Row + 1" qué hace? y ¿por qué no me funciona la macro en el caso de la tabla 1?
Por otro lado, te explico lo de las columnas A y B, son dos tipos de registros y se supone que si son del tipo de A hay que copiar los datos en la columna A de cada una de las tablas sucesivas del excel y dejar la B en blanco; y lo mismo si es del tipo B copiar los valores y dejar la columna A en blanco. Si lo dejamos como está ahora el inconveniente que veo es que copie los valores "0" de toda la columna A cuando es de tipo B, y no le podemos decir que no copie los valores "0" porque puede ser que sea del tipo B pero tengo un "0" en alguna fila, aunque es bastante improbable...
Por último, te explico el tema de las horas: hay otra tabla de origen de datos "NO TOCAR_2" donde aparecen las personas de la tabla 1 y una serie de datos suyos, divididos en algunos casos (la mayoría) por anualidades (ver foto). Yo he diseñado un vlookup que buscará el nombre de cada una de las personas y copiará el valor de la columna que yo quiero, pero no siempre está columna ocupa la posición 43 como en el siguiente ejemplo: IFERROR(VLOOKUP(C20;'NO TOCAR_2'!$C$16:$AS$6000;43;0);"").
Lo bueno es que la anualidad de la que debemos copiar los datos la mayoría de las veces viene indicada en una celda (en este caso AO2 marcada en verde), por lo que lo ideal sería decirle que cogiera los datos de la columna A (o columna que ocupa el 3º lugar) de la anualidad que este indicada en AO2, ¿eso es posible? Así no tengo que cambiar para cada uno de los casos la plantilla definiendo la posición que ocupa la información que debo copiar.
De nuevo, millones de gracias!!!! :)