Encontrar el ultimo valor con varias condiciones

Hola, les expongo este caso y agradezco me cuenten si es posible:

La idea es encontrar la ultima fecha y el ultimo kilometraje para la misma placa en que se cambio el item, siempre y cuando halla sido aprobado; es decir, como ejemplo para el item aceite 20w50 shell, que me muestre la ultima fecha y kilometraje de ese item cumpliendo las siguientes condiciones:

  • Que el numero de placa sea el mismo.
  • Que el estado sea "APROBADO".
  • Que el item sea el mismo.

Hasta el momento solo logro la fecha y kilomentraje anterior pero no logro relacionar el item y el estado.

1 respuesta

Respuesta
1

Puede subir un archivo ejemplo y la fórmula que ya tiene para poder ayudarle.

Claro aqui esta el archivo 

https://drive.google.com/open?id=1J2ysLcqhY6lgAtoNJYyqSyC3_oSd9Ts4 

En el archivo que mando todos los registros es la misma placa y en el dato "ESTADO" un registro nada más esta APROBADO.

Pregunta

1.- ¿De la misma placa habrá más registros con "ESTADO" APROBADO?

2.- ¿Puede enviar un archivo con más registros?, para poder hacer diversas pruebas y poder tener el resultados correcto.

3.- Puede enviar en el mismo archivo como quiere el resultado, a manera de ejemplo ponga unos dos resultados en base a la información que tenga el archivo.

Gracias, adjunto el archivo de acuerdo a lo que me indicas, he marcado en verde la columna a calcular y rellenado los valores esperados a nivel informativo.

https://drive.google.com/open?id=1J2ysLcqhY6lgAtoNJYyqSyC3_oSd9Ts4 

Viendo su archivo, en la columna Y veo que tiene una fórmula para el resultado RECHAZADO, ¿lo qué falta es para el resultado APROBADO?

No, la fórmula para aprobado y rechazado ya la tengo, igual para la fechas de ultimo mantenimiento y kilometraje anterior (las suproni en el archivo para que no pesara demasiado el link), lo que no logro es unicamente encontrar el ultimo kilometraje del mismo item (Descripción Sap), que fue aprobado tal como el ejemplo en verde. Es decir la fórmula que no he logrado resolver es la de la columna "Ultimo cambio del item"

Disculpe tantas preguntas pero no logro entender muy bien. Para obtener en la columna "Q" "ULTIMO CAMBIO DEL ITEM" coloreada en verde, según entiendo ese dato se obtendrá de la columna "O" "KMS ULTIMO SERVICIO" siempre y cuando el dato de la columna "Q" "ULTIMO CAMBIO DEL ITEM" sea APROBADO, ¿es así? Caso contrario si me explica cuales condiciones serán para obtener el resultado

Por el contrario, agradezco mucho que me este ayudando!. La idea es buscar el ultimo kilometraje en que se cambio ese item cumpliendo las condiciones: Que sea el mismo item, el mismo numero de placa y el ultimo kilometraje aprobado, por ejemplo:

Para el item 20w50, el cambio de aceite se aprueba el. Primero a los 1000 y en adelante cada 3000 ambos casos con una diferencia de +/- 200 por tanto el que se realizo a los 940 esta aprobado.

Caso A: El 2do Aceite (Fila 3) esta rechazado por que no cumple la condición de los 3000 kms por tanto toma el ultimo aceite aprobado con el valor de 940 (Q3).

Caso B: El 5to Aceite (Fila 6) esta aprobado por que cumple la condición de los 3000 kms, pero si nota también la anterior (Fila 5) esta aprobado, por tanto el ultimo cambio del item es 3940.

Es importante tenga en cuenta que la.Condición de los 3000 no es relevante en la fórmula que busco puesto que esta condición la defino en la columna status (y).

Espero heberme explicado.

Saludos!

Con esta macro de acuerdo a lo que entendí logre llegar al resultado con los datos del archivo que me envío, es cuestión de probar con mas datos, quizá presente inconsistencia porque si encuentra un item y placa diferente habrá que reiniciar el conteo de KM aprobado. Agregué una segunda placa a manera de prueba, y en la columna "KMS ULTIMO SERVICIO" agregue el km que tiene en la columna anterior.

Descargue el archivo ejemplo en el enlace

https://drive.google.com/open?id=1dCOI2dVgHDKi8xCoD16iiMiw2PDXCZ32 

Sub Macro1()
    uF = Sheets("Hoja1").Range("K" & Rows.Count).End(xlUp).Row
    For cont = 2 To uF
    APROBADO = 800
        nombrePlaca = Sheets("Hoja1").Cells(cont, 13).Value
        For contPlaca = 2 To uF
                If Sheets("Hoja1").Cells(contPlaca, 13) Like nombrePlaca Then
                    n = n + 1
                Else
                End If
        Next contPlaca
        Worksheets("Hoja1").Range(Cells(cont, 13), Cells(cont + n - 1, 13)).Select
        For Each Celda In Selection
            uFplaca = Sheets("Hoja1").Range("M" & Rows.Count).End(xlUp).Row
            For contP = cont To uFplaca
            Item = Range("K" & cont).Value
            Placa = Range("M" & cont).Value
            Kms = Range("O" & cont).Value
            ESTADO = Range("Y" & cont).Value
            If Sheets("Hoja1").Cells(cont, 11) Like Item And Sheets("Hoja1").Cells(cont, 13) Like Placa And Sheets("Hoja1").Cells(cont, 25) Like ESTADO Then
                If Kms >= APROBADO Then
                    Sheets("Hoja1").Cells(cont, 17) = Kms
                    AprAnt = Sheets("Hoja1").Cells(cont, 17).Value
                    APROBADO = APROBADO + 2000
                Else
                    Sheets("Hoja1").Cells(cont, 17) = AprAnt
                End If
            End If
            Next contP
        Next Celda
    Next cont
End Sub

Muchas Gracias! pero segun veo, dentro del macro, esta tambien condicionando la aprobacion del item y cada Item tiene variables diferentes de aprobacion. Por otro lado es un libro con muchos registros y formulas matriciales por lo que ya la memoria no aguanta un macro. Yo trate con estq formula pero solo me da el ultimo Kilometraje en funcion de la placa pero no logro relacionar el status del Item:

=SI.ERROR(INDICE($B$2:$B$6;COINCIDIR(K.ESIMO.MAYOR(SI($C$2:$C$6=C2;SI($A$2:$A$6<A2;$A$2:$A$6));1);SI($C$2:$C$6=C2;SI($A$2:$A$6<A2;$A$2:$A$6));0));"")

Por 

Intente con esta fórmula, cambia la coma (,) por punto y coma (;) en la fórmula

=SI(N2>800,SI(Y2="APROBADO",N2,SI(O2>800,SI(Y2="RECHAZADO",N1,SI(N2>2800,SI(Y2="APROBADO",N2,SI(N2>2800,SI(Y2="RECHAZADO",N1))))))))

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas