Insertar fila con base a los días laborados.

Tengo una lista de personas y estas pueden tener distintas novedades incapacidad, vacaciones, licencias. Hay una columna que me indica la fecha de inicio y fecha final de cada una de estas novedades que se presentan por mes, que es lo complicado del asunto que toca manualmente insertarle a cada persona un fila por cada novedad y ponerle sus días de acuerdo a cada novedad.

Esta imagen muestro un ejemplo muy sencillo de 3 personas, sin convertir es el inicial y convertido es cuando se realiza el proceso manual se inserta una fila por cada novedad con sus días.

Tengo esta código inicio que me inserta una fila en blanca abajo de cada registro.

Sub Insertar_filas()
'Definimos variables
Dim tTop, rFila, i, j As Double
'Buscamos el número de columna en el que estamos
nColum = ActiveCell.Column
'Buscamos la letra de la columna en la que estamos
lColum = Split(ActiveCell.Address, "$")(1)
'Determinamos el rango para definir la longitud del bucle for-next
Rango = lColum & ":" & lColum
'Indicamos el número de línea sobre el que comenzamos a añadir filas en blanco
tTop = 3
'Indicamos el número de filas en blanco a incluir
rFila = 1
fin = Application.CountA(ActiveSheet.Range(Rango))
For j = 2 To fin
'Si la primera celda (en este caso la 3) contiene un valor, entonces comenzamos a insertar filas
'intercaladas
If Not IsEmpty(Cells(tTop, nColum)) Then
For i = 1 To rFila
Cells(tTop, nColum).EntireRow.Insert
Next i
tTop = tTop + rFila + 1
End If
Next j
End Sub

1 respuesta

Respuesta
1

Había preparado un código para tu ejemplo anterior. Ahora veo que tenés otro modelo de hoja... por lo que el código ya no te servirá.

¿Podrías dejar nuevamente tu libro con el modelo 'real' o enviármelo a mi correo? (Aparece en mi sitio que dejo al pie)

De todos modos te comento la duda en el primer ejemplo: ¿Cuándo o cómo le indicas a Excel que necesitas una fila, por ej, para MORA?

Pareciera que cuando ingresas una fecha en algunas de las columnas de fechas a partir de C, ¿se inserta la fila y esa fecha la pasas a la nueva fila... es correcto?

Quedo a la espera de tus aclaraciones o nuevo modelo.

Buenas tardes.

acabo en enviar las aclaraciones  a su correos, muchas.

Agradeciera me comparta lo que tiene hasta momento me sirve de mucho.. de nuevo muchas gracias quedo atento.

¡Gracias! 

Ya dejé la macro en tu primera consulta considerando que ese es el modelo real.

También te devolví el libro con la macro ejecutada.

Solo falta que me aclares el nuevo punto solicitado:

Un dato muy importante y que no le he mencionado es que los días iniciales siempre son 30 y lo que buscaría al final es que línea o final principal o inicial quede con la diferencia de días.

Sdos!

Buenas Tardes Muchas Gracias por respuesta.

Un dato muy importante y que no le he mencionado es que los días iniciales siempre son 30 y lo que buscaría al final es que línea o final principal o inicial quede con la diferencia de días.

Si hablando puntualmente de las columnas de la (J a la M) acá se debería hacer una resta. por que ya sabemos que los días que me entregan en archivo son 30 siempre independiente que el mes tenga 31 o 28 días.  ! ahora usted me pregunta resta contra que.?

Aclaro la resta se debe hacer contra la fila o linea que se inserta de acuerdo a los días que estuvo en la novedad, ahora viene mi pregunta cuando la persona tiene una novedad ejemplo del 1 de abril al 5 de abril entonces cuando llevamos esto a días sabemos que estuvo 5 días como hago que la macro automatice esto y cuando ejecute haga esta operación.

Vuelvo al ejemplo anterior gráficamente;

del 1 de abril al 5 de abril = 5 días.

Resultado.

Como se puede observar desde la columna J a la M se realizo la operación. y las dos filas suman 30 días.

Quedo muy atento a sus comentarios.

Te estoy devolviendo libro con las macros ejecutadas.

Sdos!

Te espero en mi canal!

¡MIL Gracias!

Te estaré etiquetando en un nuevo caso si necesito algo.

Excelente colaboración gran trabajo Dios bendiga Elsa.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas