Coincidir 3 valores String de 3 columnas distintas y restar el valor de una cuarta columna con el inmediatamente superior.

4 envíos / 0 nuevos
Último envío
Jose Leiva
Imagen de Jose Leiva
Offline
última acción: Hace 4 años 9 meses
alta: 25/02/2020 - 12:05
Puntos: 35
Coincidir 3 valores String de 3 columnas distintas y restar el valor de una cuarta columna con el inmediatamente superior.

Estimados, primero que nada agradecerles su continua y enorme labor ejercida en este medio gratuito para todo interesado. Durante mi formación universitaria me han guiado con una serie de problemas que han resuelto a otra gente como yo, pero supongo que a todos nos toca escribir alguna vez..

 

El problema al que me enfrento actualmente es el siguiente:

Los operadores de mantención de una planta productiva ingresan los cambios de ciertos consumibles de una máquina a una planilla, la cual comprenderán no se respeta del todo bien...

Debido a esto he creado una serie de formularios en VBA que permiten ingresar los cambios de una manera algo más expedita, ahora el problema con esto es que:

Todos estos cambios están siendo guardados en una planilla llamada RegistroDatos, con el fin de mantener el análisis posterior en un único lugar, de hacerlo separado, tendría que linkear los formularios a 56 planillas distintas, una para cada tipo de cambio. Lo cual ya pasados los días con este problema dejé de ver con malos ojos.

En la columna E la idea es que, ya sea mediante un comando u fórmula, se busque coincidir los valores de las 3 columnas previas (A;B;C) con el valor (coincidencia) INMEDIATAMENTE ANTERIOR existente y, finalmente, reste el valor de fechas de la columna D, en caso que no exista coincidencia, muestre el valor "EN USO".

*Con Anterior me refiero a la fecha inmediatamente superior a la que se busca.

 

les dejo el libro con los valores deseados en la columna E.

 

He visto un par de temas que coinciden en varios puntos con lo que estoy buscando, pero no termino por encajarlo con esta situación y quedando a medio camino con las variantes que ahí ofrecen "Cron" y "paco megia".

https://www.necesitomas.com/consulta-buscar-v-siguiente-valor-del-mismo-objeto

https://www.necesitomas.com/formula-buscar-y-encontrar-inmediatamente-superior

 

 

 

 

AdjuntoTamaño
File muestra_necesitomas.xlsx9.69 KB
Cron
Imagen de Cron
Offline
última acción: Hace 1 año 4 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Es que estas cositas me

Es que estas cositas me gustan, jaja

Efectivamente, es parecido a la respuesta que di en su día.

 

Necesitas una fórmula matricial (que no matriarcal)

En tu Excel he puesto en la E3 lo siguiente:

=SI.ERROR(DESREF(E3;MAX((A$2:A2=A3)*(B$2:B2=B3)*(C$2:C2=C3)*FILA(A$2:A2))-MAX(FILA());-1)-D3;"EN USO")

Debes introducir esta fórmula con CTRL+MAYS+ENTER para que funcione.

Luego, arrástrala hasta abajo del todo.

Hace exactamente lo que quieres: si no se ha dado antes la combinación de las tres celdas, pone "EN USO". Si la encuentra, se queda con la fecha de la última (no mira por fecha, sino por posición en la tabla, se queda con la que tiene mayor número de fila, antes de la anotación actual) y le resta la fecha de la columna E correspondiente.

 

Un saludo

Jose Leiva
Imagen de Jose Leiva
Offline
última acción: Hace 4 años 9 meses
alta: 25/02/2020 - 12:05
Puntos: 35
funciona a la perfeccion,

funciona a la perfeccion, notable!!

el único inconveniente sucede al registrar en el formulario el cambio del consumible, cuando la fórmula se aplica en este ingreso el valor que ingresa no es EN USO, sinó 0, imagino es por el tema matricial, alguna ayuda con eso?

Cron
Imagen de Cron
Offline
última acción: Hace 1 año 4 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Tienes un formulario que se

Tienes un formulario que se abre y te registra una línea nueva?

Quizás deberías mirar qué hace el formulario. En esa columna debería modificar la propiedad ArrayFormula y no añadir un valor 0

 

Si no es eso, no entiendo cuál es el problema...