Hola,
Tengo esta base de datos (es mucho más extensa ya que en la columna ID puede haber hasta 7000 códigos y las fechas 13 meses, de enero a enero) en al que los ID se repiten en cada fila, y se le asigna un valor en las columnas de las fechas que coincide con el periodo que establecen las columnas Fecha inicio-Fecha fin. Así para el 647175 la fecha de inicio es 1/1 y la de fin es 1/1 y en esa celda en particular le corresponde una A para el día 1/1.
ID | FECHA | FECHA | FECHA | 01/01/2017 | 02/01/2017 | 03/01/2017 | 04/01/2017 | 05/01/2017 | 06/01/2017 | |
647175 | 29/12/2016 | 01/01/2017 | 01/01/2017 | A |
|
|
|
|
| |
647175 | 04/01/2017 | 02/01/2017 | 03/01/2017 |
| R | R |
|
|
| |
517856 | 04/01/2017 | 01/01/2017 | 02/01/2017 | P | P |
|
|
|
| |
517856 | 04/01/2017 | 03/01/2017 | 06/01/2017 |
|
| A | A | R | R | |
658421 | 04/01/2017 | 01/01/2017 | 03/01/2017 | A | A | A |
|
|
| |
658421 | 04/01/2017 | 04/01/2017 | 06/01/2017 |
|
|
| R | R | P | |
647247 | 04/01/2017 | 01/01/2017 | 04/01/2017 | R | R | R | R |
|
| |
647247 | 21/09/2016 | 09/01/2017 | 15/01/2017 |
|
|
|
| P | P |
Lo que necesito, y no he sido capaz de conseguir es que, tomando como referencia el ID, todos los valores se unifiquen en una sola fila, respetando los valores y las fechas. Algo así:
ID | FECHA | FECHA | FECHA | 01/01/2017 | 02/01/2017 | 03/01/2017 | 04/01/2017 | 05/01/2017 | 06/01/2017 | |
647175 | 29/12/2016 | 01/01/2017 | 01/01/2017 | A | R | R |
|
|
| |
517856 | 04/01/2017 | 01/01/2017 | 02/01/2017 | P | P | A | A | R | R | |
658421 | 04/01/2017 | 01/01/2017 | 03/01/2017 | A | A | A | R | R | P | |
647247 | 04/01/2017 | 01/01/2017 | 04/01/2017 | R | R | R | R | P | P |
Además en caso de que la columna Fecha solicitud se repita en un mismo ID, necesito que el valor que se asigne a la celda sea el que tenga la fecha más reciente. Ejemplo: Para este ID hay dos fechas de solicitud diferentes 29/12 y 4/1
ID | FECHA | FECHA | FECHA | 01/01/2017 | |
647175 | 29/12/2016 | 01/01/2017 | 01/01/2017 | R | |
647175 | 04/01/2017 | 01/01/2017 | 01/01/2017 | A |
Necesito que el resultado final sea este, donde prevalece el valor del 04/01/2017 ya que es mas reciente que el 29/12
ID | FECHA | FECHA | FECHA | 01/01/2017 | |
647175 | 29/12/2016 | 01/01/2017 | 01/01/2017 | A |
Muchas gracias de antemano por las respuestas.
Saludos
Una vez tuve un problema similar. Tuve que solucionarlo creando una macro que iba recorriendo la columna A, luego iba comparando datos, copiaba los datos que tenía que copiar y eliminaba los que tenía que eliminar. ¿Sabes hacer macros?
Si, pero no tanto como para implementar esto. Si tuvieras algo que me pudiera ayudar te estaria muy agradecido.
Saludos
Lo que pasa es que es algo muy específico según como estén colocados los datos.
Si no tienes celdas vacías en la columna A, puedes recorrerla con un bucle while del tipo:
Do while cells(1,i) <> ""
***cosas que hace***
Loop
Dentro de las **cosas que hace**, compara el valor de cells(1,i) con cells(1,i-1), y si son iguales, entonces empieza a mirar el resto de celdas. Finalmente eliminas la fila i y vas directamente a Loop.
Si los valores de cells(1,i) y cells(1,i-1) no son iguales, entonces haces i=i+1 para pasar a la fila siguiente y Loop.
Esto es porque cuando eliminas una fila no debes pasar a la siguiente fila, pues al eliminar la actual, la siguiente ocupa su lugar y debes analizarla igual.
Puedes proponer algo de código sobre el que construiremos o sobre el que te podemos dar indicaciones, o adjuntar un modelo de tu estructura de datos en un archivo de manera que podamos probar lo que te decimos.
Un saludo
Perfecto, me pongo y en cuanto tenga algo desarrollado os lo enseño.
Gracias¡¡