Excel - Macro para buscar fechay hora en una columna y añadirlo si no lo encuentra

   
Vista:

Macro para buscar fechay hora en una columna y añadirlo si no lo encuentra

Publicado por Toni (5 intervenciones) el 07/05/2015 23:16:47
Hola amigos, tengo que realizar una macro en excel que realice lo siguiente:
Tengo que buscar en una columna(Columna de fecha y hora) que existan datos diezminutales (cada diez minutos) desde el dia 1 del mes XX del año YYYY hasta el ultimo dia del mes.

Yo en mi archivo, tendré datos horarios diezminutales de todos los dias del mes, de esta manera:

01/05/2015 00:00
01/05/2015 00:10
01/05/2015 00:20
01/05/2015 00:40
01/05/2015 00:50
01/05/2015 01:00
.
.
.
31/05/2015 23:20
31/05/2015 23:30
31/05/2015 23:50

Sin embargo, en el archivo habrá datos (Fecha Hora) que falten, como en el ejemplo serían : 01/05/2015 00:30 31/05/2015 23:40

La macro tendría que detectar todos esos pares de datos que falten desde el dia 01/MM/AAAA 00:00 hasta 31/MM/AAAA 23:50, e insertarlos justo en el hueco correspondiente.

Tambien deberia tener en cuenta cuantos dias tiene el mes para que si es un mes de 30 dias o de 28 no siga añadiendo. Para eso podria ayudar el dato de que SIEMPRE habrá algun dato de cada día, osea que si no hay ningun dato del dia 31, significa que el mes es de 30 dias y no nocesita seguir buscando y añadiendo.

Alguien me puede ayudar por favor?

Muchas gracias por adelantado.

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Macro para buscar fechay hora en una columna y añadirlo si no lo encuentra

Publicado por Khristtian (77 intervenciones) el 08/05/2015 03:29:40
Tienes que programar lo siguiente:

Una variable de tipo datetime a la que le asignaras el primer dia del mes a analizar y y hora 00.

Creas un bucle que recorra desde ese primer dia del mes a las 00 horas hasta el ultimo del del mes, sumandole por cada en cada paso 10 minutos.

Vas comparando en cada ciclo, el valor de la celda con el valor de la fecha, si son iguales, no se hace nada, si son distintos, insertas una nueva fila y agregas la fecha faltante.

En algoritmo seria algo asi.

Variables:
FechaConHora: 01-01-2015 00:00
MesActual= mes(FechaConHora)
MesNuevaFecha=mes(FechaConHora)

Posicionarse en la celda A1
ValorDeCelda=valor De Celda Actual

Hacer mientras (MesActual=MesNuevaFecha)

si ValorDeCelda <> FechaConHora

insertar una nueva Fila
Asignar a la Celda Actual = FechaConHora

Fin Si

Bajar Una celda la Seleccion Actual
ValorDeCelda=valor De Celda Actual
FechaConHora = FechaConHora + 10 minutos
MesNuevaFecha=mes(FechaConHora) 'Aqui, cuando sumando los 10 min, pases al siguiente mes, ya no habrá mas loop
Loop


En resumen, partes del dia 1 a la hora 00, y verificas si la primera celda es igual a dicho valor

Si es igual no hará nada, y bajará una celda, se sumaran 10 min a la fecha y repetiras el ciclo

Si no es igual, insertas una nueva fila, desplazando lo demas, y pones la fecha y hora que faltan. Luego bajas una celda y aumentas la fecha en 10 min.

El ciclo se controla verificando que los aumentos de 10 mantengan la fecha dentro del mes. (No necesitas controlar si el mes es de 28, 29, 30 0 31 dias), el loop se acaba cuando llegues por ejemplo: de 01-01-2015 00:00 a 01-02-2015 00:00, donde el ultimo loop ejecutado serà 31-01-2015 23:59


Espero te sirva


Si no puedes programarlo, mandame tu archivo y te lo hago. (tardo mas en este algoritmo que programarlo)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar