Separación de HO-HNO en Excel
Resuelto
micbru14
Mensajes publicados
26
Estado
Miembro
-
micbru14 Mensajes publicados 26 Estado Miembro -
micbru14 Mensajes publicados 26 Estado Miembro -
Hola,
Tengo una tabla de alarmas que me sintetiza la indisponibilidad de equipos anotando la hora de corte y la hora de restablecimiento del mismo.
Actualmente tengo una tabla en la que calculo la diferencia de horas entre dos celdas en el formato "jj/mm/aaa hh:mm".
Mi celda de resultado está en el formato [hh]:mm:ss y puedo tener resultados como "112:45:32" si la interrupción del equipo dura varios días.
Deseo mejorar esta tabla y obtener 2 resultados de esta diferencia:
- en una celda la duración de la interrupción en horas no laborables (HNO), es decir, de semana de 18h00 a 8h00 del día siguiente, así como el fin de semana de viernes 18h00 a lunes 8h00.
- en la celda adyacente la duración de la interrupción en horas laborables (HO), es decir, de lunes a viernes de 8h00 a 18h00.
Gracias por su ayuda
Hasta pronto.
Tengo una tabla de alarmas que me sintetiza la indisponibilidad de equipos anotando la hora de corte y la hora de restablecimiento del mismo.
Actualmente tengo una tabla en la que calculo la diferencia de horas entre dos celdas en el formato "jj/mm/aaa hh:mm".
Mi celda de resultado está en el formato [hh]:mm:ss y puedo tener resultados como "112:45:32" si la interrupción del equipo dura varios días.
Deseo mejorar esta tabla y obtener 2 resultados de esta diferencia:
- en una celda la duración de la interrupción en horas no laborables (HNO), es decir, de semana de 18h00 a 8h00 del día siguiente, así como el fin de semana de viernes 18h00 a lunes 8h00.
- en la celda adyacente la duración de la interrupción en horas laborables (HO), es decir, de lunes a viernes de 8h00 a 18h00.
Gracias por su ayuda
Hasta pronto.
13 respuestas
Hola,
Gracias, revisaré todo y tendré una respuesta para mañana.
Nota:
también es posible subir el archivo (tabla) en https://www.cjoint.com/ y publicar el enlace, es más sencillo.
--
Saludos.
Jean-Pierre
Gracias, revisaré todo y tendré una respuesta para mañana.
Nota:
también es posible subir el archivo (tabla) en https://www.cjoint.com/ y publicar el enlace, es más sencillo.
--
Saludos.
Jean-Pierre
Hola,
Aquí está mi propuesta, esperando que sea en el buen sentido: https://www.cjoint.com/?clxBk2ZP3C
--
Saludos.
Jean-Pierre
Aquí está mi propuesta, esperando que sea en el buen sentido: https://www.cjoint.com/?clxBk2ZP3C
--
Saludos.
Jean-Pierre
Hola,
"Mis respetos" su solución funciona de maravilla y si me atreviera, abusaría un poco más de sus conocimientos para saber qué modificaciones habría que hacer a la macro para considerar el sábado como un día hábil también.
De todos modos, muchas gracias.
Saludos.
Micbru14
"Mis respetos" su solución funciona de maravilla y si me atreviera, abusaría un poco más de sus conocimientos para saber qué modificaciones habría que hacer a la macro para considerar el sábado como un día hábil también.
De todos modos, muchas gracias.
Saludos.
Micbru14
Hola,
me permito volver a ponerme en contacto con usted porque acabo de encontrar un problema con la macro.
De hecho, cuando las interrupciones son en semana y en horas no laborables, me señala errores. Un pequeño mensaje me indica horas negativas (?????).
El fenómeno no ocurre cuando las interrupciones son el fin de semana, incluso entre las 18:00 y las 8:00.
He incluido este ejemplo en el archivo adjunto. https://www.cjoint.com/?dbnGZ8JlTf
¿Puede ayudarme, por favor?
Atentamente
me permito volver a ponerme en contacto con usted porque acabo de encontrar un problema con la macro.
De hecho, cuando las interrupciones son en semana y en horas no laborables, me señala errores. Un pequeño mensaje me indica horas negativas (?????).
El fenómeno no ocurre cuando las interrupciones son el fin de semana, incluso entre las 18:00 y las 8:00.
He incluido este ejemplo en el archivo adjunto. https://www.cjoint.com/?dbnGZ8JlTf
¿Puede ayudarme, por favor?
Atentamente
Hola,
Gracias por tomar esta versión corregida: https://www.cjoint.com/?dbwXLvKUwJ
--
Saludos.
Jean-Pierre
Gracias por tomar esta versión corregida: https://www.cjoint.com/?dbwXLvKUwJ
--
Saludos.
Jean-Pierre
Hola micbru14,
Te he enviado el archivo equivocado, lo siento, gracias por revisar el MP
--
Saludos.
Jean-Pierre
Te he enviado el archivo equivocado, lo siento, gracias por revisar el MP
--
Saludos.
Jean-Pierre
Hola,
tengo otro problema con la macro (ver: http://cjoint.com/?ddljaFbYjE).
El problema de las horas negativas ahora está en la columna HNO.
El primer intento que hice estaba bien, pero la interrupción ocurrió en un mismo día.
Parece que no funciona cuando la interrupción abarca 2 fechas.
Gracias por su ayuda
Atentamente
tengo otro problema con la macro (ver: http://cjoint.com/?ddljaFbYjE).
El problema de las horas negativas ahora está en la columna HNO.
El primer intento que hice estaba bien, pero la interrupción ocurrió en un mismo día.
Parece que no funciona cuando la interrupción abarca 2 fechas.
Gracias por su ayuda
Atentamente
Hola,
Reemplace el procedimiento existente por el siguiente:
--
Saludos.
Jean-Pierre
Reemplace el procedimiento existente por el siguiente:
Function NbHeuJourOuv(dd, df, hd, hf) Dim datdeb, datfin, hdeb, hfin, nbj Dim houvd, houvf, hnhjo Dim c As Byte, test, fin houvd = CDate(hd) houvf = CDate(hf) datdeb = dd datfin = df hdeb = datdeb - 1 * Int(datdeb / 1) hfin = datfin - 1 * Int(datfin / 1) nbj = DateDiff("d", datdeb, datfin) For c = 0 To nbj test = datdeb + c If Weekday(datdeb + c) = 1 Or Weekday(datdeb + c) = 7 Then ' MsgBox "Sábado / Domingo" Else ' MsgBox "laborable" If nbj = 0 Then If houvd < hdeb And hfin <= houvf Then hnhjo = hfin - hdeb ElseIf hdeb < houvd And (hfin > houvd And hfin <= houvf) Then hnhjo = (hfin - houvd) ElseIf (hdeb >= houvd And hdeb < houvf) And hfin > houvf Then hnhjo = houvf - hdeb ElseIf hdeb < houvd And hfin > houvf Then hnhjo = houvf - houvd End If Else If test = datdeb Then If houvd < hdeb And hdeb < houvf Then hnhjo = hnhjo + houvf - hdeb ElseIf hdeb < houvd Then hnhjo = hnhjo + (houvf - houvd) End If ElseIf Format(test, "dd mm yyyy") = Format(datfin, "dd mm yyyy") Then If houvd < hfin And hfin < houvf Then hnhjo = hnhjo + hfin - houvd ElseIf hfin > houvf Then hnhjo = hnhjo + (houvf - houvd) End If Else hnhjo = hnhjo + (houvf - houvd) End If End If End If Next c NbHeuJourOuv = hnhjo End Function --
Saludos.
Jean-Pierre
Tendrán que interpretar porque no he encontrado cómo integrar tablas de Excel en mis mensajes.
1er tableau:
La fórmula introducida en la columna D es: =SI(D4="Contact ok";B4-B3;"")
El formato de las celdas de la columna A es: jj/mm/aaaa hh:mm
El formato de las celdas de la columna D es: [h]:mm
A1:"Fecha-hora", B1:"Eqpt", C1:"contacto", D1:"Duración corte"
A2:"02/02/10 08:00", B2:"toto", C2:"contacto perdido", D2:""
A3:"02/02/10 08:35", B3:"toto", C3:"contacto ok", D3:"0:35"
A4:"03/02/10 13:10", B4:"tata", C4:"contacto perdido", D4:""
A5:"03/02/10 19:15", B5:"tata", C5:"contacto ok", D5:"6:05"
A6:"05/02/10 14:00", B6:"tutu", C6:"contacto perdido", D6:""
A7:"08/02/10 09:10", B7:"tutu", C7:"contacto ok", D7:"67:10"
A8:"06/02/10 14:00", B8:"tutu", C8:"contacto perdido", D8:""
A9:"07/02/10 09:10", B9:"tutu", C9:"contacto ok", D9:"67:10"
Lo que me gustaría obtener se presenta como el siguiente ejemplo:
- Ejemplo 1, es un día de semana (martes) y el corte es entre las 8h y las 18h.
- Ejemplo 2, es un día de semana (miércoles) y el corte es entre las 13h10 y las 19h15
es decir 4h50 en HO de 13h10 a 18h00 y 1h15 en HNO después de las 18h00
- Ejemplo 3, el corte es del viernes antes de las 18:00 hasta el lunes después de las 8h00
es decir 4h00 HO antes de las 18h del viernes + 1h10 HO después de las 8h del lunes y
y 62h00 HNO desde el viernes a las 18h hasta el lunes a las 8h00
- Ejemplo 4, el corte tiene lugar entre el sábado y el domingo, es decir, únicamente HNO
A1:"Fecha-hora", B1:"Eqpt", C1:"contacto", D1:"H0", E1:"HNO"
A2:"02/02/10 08:00", B2:"toto", C2:"contacto perdido", D2:"", E2:""
A3:"02/02/10 08:35", B3:"toto", C3:"contacto ok", D3:"0:35", E3:"0:00"
A4:"03/02/10 13:10", B4:"tata", C4:"contacto perdido", D4:"", E4:""
A5:"03/02/10 19:15", B5:"tata", C5:"contacto ok", D5:"4:50", E5:"1:15"
A6:"05/02/10 14:00", B6:"tutu", C6:"contacto perdido", D6:"", E6:""
A7:"08/02/10 09:10", B7:"tutu", C7:"contacto ok", D7:"5:10", E7:"62:00
A8:"06/02/10 14:00", B8:"tutu", C8:"contacto perdido", D8:"", E8:""
A9:"07/02/10 09:10", B9:"tutu", C9:"contacto ok", D9:"0:00", E9:"19:10"
He intentado cambiar el formato de fecha de la columna A poniendo uno del tipo predeterminado: "*miércoles 14 marzo 2001" sólo para asegurarme de que Excel tiene bien en cuenta el día de la semana y conserva la hora aunque no se muestre más que en el panel de lectura.
Espero que este mensaje sea un poco más claro y Gracias por su ayuda