Combinar filas según el texto.

Tengo una planilla en Excel que lleva las horas de trabajo. La planilla va desde la celda d5 hasta la celda ai6. Desde la fila d5 a la fila ai5 llevo los días que trabajo de 20 a 8 ( horario nocturno) y de la fila d6 a la fila ah6 los días que trabajo de 8 a 20 (horario diurno).

En cada celda del rango (D5:AI6) hay validación de datos con las siguientes validación:

- Cantidad de horas que van del 1 al 16

- "Fra" de franco

-"vac" de vacaciones.

-"ART" de accidentes

-"Enf" de enfermedad

-"ACA" Ausente con aviso

-"ASA" ausente sin aviso.

Mi consulta es la siguiente: se podrá combinar la celda de arriba con la de abajo para cuando en la celda de arriba o de abajo haya la validación de "Fran" o "vac", etc., Ya que si estoy de franco o de vacaciones los ponga una sola vez y nomdos veces.

¿Por qué lo quiero así? Porque si estoy de franco no puedo estar de franco solo de 20 a 8 o de 8 a 20 ya que el día de franco es todo el día. Si pongo franco tanto en la celda de arriba como en la celda de abajo me va a contar como si tuviera dos francos.

1

1 Respuesta

4.480.700 pts. Sancho, si los perros ladran ...

Podrías explicarlo con imágenes, poniendo de ejemplo en una imagen lo que tienes y en otra imagen lo que esperas de resultado

Ahí te mando por correo porque desde el celular no me deja enviar la imagen

Si me vas a enviar el correo, mejor envíame tu archivo y me explicas con colores lo que necesitas.

Debes enviarme un correo nuevo, en el asunto pon tu nombre de usuario: "favio valdez"

Te envíe un correo nuevo con el archivo detallado. Desde ya muchas gracias.

Te anexo el código para los eventos de tu hoja.

Cuando captures en la celda, los textos los debes poner en la primer fila.

Private Sub Worksheet_Change(ByVal Target As Range)
'Por Dante Amor
    u = Range("A" & Rows.Count).End(xlUp).Row
    Set rango = Range("E5:AI" & u)
    If Not Intersect(Target, rango) Is Nothing Then
        If Target.Count > 10 Then Exit Sub
        '
        If Target.MergeCells Then
            Application.ScreenUpdating = False
            Application.EnableEvents = False
            direcc = Target.Cells(1, 1).MergeArea.Address
            Target.UnMerge
            Range("E5").Copy
            Range(direcc).PasteSpecial Paste:=xlPasteValidation
            Application.EnableEvents = True
            Application.CutCopyMode = False
            Application.ScreenUpdating = True
        End If
        '
        If Target.Cells(1, 1).Value = "" Then Exit Sub
        If IsNumeric(Target.Cells(1, 1).Value) Then Exit Sub
        If WorksheetFunction.IsEven(Target.Cells(1, 1).Row) = True Then Exit Sub
        '
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        With Range(Target.Cells(1, 1), Target.Cells(2, 1))
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlCenter
            .MergeCells = True
        End With
        Application.ScreenUpdating = True
    '
    End If
End Sub


Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. En el panel del lado derecho copia la macro

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas