Marcar celdas duplicadas, pero que además dependan de el valor en otra celda y fecha

Estoy elaborando un documento de excel que organiza y analiza un reporte mensual, trata sobre visitas técnicas. La parte donde estoy detenido ahorita es, en el tema de Re-visitas.

Lo que requiero encontrar es la manera para que, analice que unidad(columna D) y cliente(columna F) se repitan en el rango de tipos de llamada(columna F):CORRECTIVO. Pero que además analice Si hubo una llamada CORRECTIVA(columna F), con una fecha(columna C) en el mismo cliente y unidad. Después de una preventiva.

Que marque las celdas como revisitas si

1) Se repiten cliente y unidad bajo el tipo de llamadas correctivo

2)Si hay una visita preventiva y una fecha posterior una visita correctiva en el mismo cliente y unidad

La verdad no tengo ni la más remota idea sobre como hacer esto, por eso solicito ayuda desde 0.

1 Respuesta

Respuesta
1

¿En la imagen que pusiste existe uno o varios casos que cumplan con las condiciones?

Puedes marcarlos de algún color y poner la pantalla.

Ya con el ejemplo marcado, explicas nuevamente el caso marcado.

Este seria por asistir por el mismo motivo "CORRECTIVO"(columna F) en la misma unidad (columna DE D43 y D44) y mismo cliente (columna E E43 Y E44). NO importa la fecha.. solo el que sea el mismo lugar por el mismo tipo de llamada.

En este otro caso la revisita seria por que la fecha 16/07 (C36) hay una visita preventiva(F36) que más adelante el día 17/07 (C41) hay una visita a la misma unidad(D41 y D36) y mismo cliente(E41 y E41), pero ahora es una CORRECTIVA (F41) . Se genera por una visita correctiva generada una fecha después de haber generado una visita preventiva.

Ejecuta la siguiente macro.

Nota: La macro ocupa las columnas Y:Z para hacer operaciones.

Sub Macro7()
'   Por Dante Amor
'
    col = "Y"
    c1 = Columns(col).Column
    c2 = Columns(col).Column + 1
    u = Range("D" & Rows.Count).End(xlUp).Row
    With Range(col & "27:" & col & u)
        .FormulaR1C1 = "=RC4&RC5"
    End With
    Range("D27:D" & u).Interior.ColorIndex = xlNone
    Range(col & "27:" & col & u).Copy
    Cells(27, c2).PasteSpecial xlValues
    ActiveSheet.Range(Cells(27, c2), Cells(u, c2)).RemoveDuplicates Columns:=1, Header:=xlYes
    '
    u2 = Cells(Rows.Count, c2).End(xlUp).Row
    For i = 28 To u2
        Set r = Columns(c1)
        Set b = r.Find(Cells(i, c2), LookAt:=xlWhole, LookIn:=xlValues)
        una = True
        If Not b Is Nothing Then
            celda = b.Address
            fila = b.Row
            tip1 = Cells(b.Row, "F")
            fec1 = Cells(b.Row, "C")
            If LCase(tip1) = LCase("Preventivo") Then
                Do
                    If una Then
                        una = False
                    Else
                        fec2 = Cells(b.Row, "C")
                        tip2 = Cells(b.Row, "F")
                        If LCase(tip2) = LCase("Correctivo") And fec1 < fec2 Then
                            Range("D" & fila).Interior.ColorIndex = 6
                            Range("D" & b.Row).Interior.ColorIndex = 6
                        End If
                    End If
                    Set b = r.FindNext(b)
                Loop While Not b Is Nothing And b.Address <> celda
            ElseIf LCase(tip1) = LCase("Correctivo") Then
                Do
                    If una Then
                        una = False
                    Else
                        fec2 = Cells(b.Row, "C")
                        tip2 = Cells(b.Row, "F")
                        If LCase(tip2) = LCase("Correctivo") Then
                            Range("D" & fila).Interior.ColorIndex = 3
                            Range("D" & b.Row).Interior.ColorIndex = 3
                        End If
                    End If
                    Set b = r.FindNext(b)
                Loop While Not b Is Nothing And b.Address <> celda
            End If
        End If
    Next
    MsgBox "Fin"
End Sub

Existen algunos casos que no sé si existan, y en caso de existir, cómo se resolvería, por ejemplo:

  • Qué pasa si una misma unidad-cliente tiene correctivo, ¿después preventivo y después correctivo? La macro solamente pintaría los 2 correctivos.
  • O qué pasa si tienes preventivo, preventivo y correctivo, la macro solamente pinta el 1 y el 3.

En específico, la macro solamente pinta los 2 casos que pusiste.


Prueba y me comentas.

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Macro7
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

Saludos, gracias, al parecer si funciona al buscar esos criterios.

a) Solo que mueve los datos que encuentra, y lo único que me gustaría fuera que los marcase de otro color las celdas nada más

b) Sobre los casos que mencionaste al final,

  • Qué pasa si una misma unidad-cliente tiene correctivo, ¿después preventivo y después correctivo? La macro solamente pintaría los 2 correctivos.// la idea seria que marcase, el preventivo y el 3 correctivo. Esas serian revisitas
    • O qué pasa si tienes preventivo, preventivo y correctivo, la macro solamente pinta el 1 y el 3. // al segundo preventivo y el correctivo serian revisitas, por lo tanto debería marcarlas de color

La macro no mueve nada, solamente pinta celdas.

Prueba con una muestra más pequeña.

No olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas