Jump to content

Función que convierta minutos en horas


Recommended Posts

Buenas tardes,

Tengo una función que convierte minutos en horas:

'Convierto minutos en horas
Function CalculoHHMM(intMinutos As Integer) As Date
intMinutos = Abs(intMinutos Mod 1440)
CalculoHHMM = intMinutos \ 60 & ":" & Format((Abs(intMinutos Mod 60)), "00")
End Function

El problema es que si la cantidad de minutos a convertir en horas sobrepasa los 1440 minutos (24 horas) el contador vuelve a cero y no consigo hacer que las horas sigan sumándose a partir de 24h.

Por ejemplo, 1441 minutos son 24:01 horas. Con esa función lo muestra cómo 00:01 horas, que no es lo que busco.

¿Alguna ayuda?

Gracias.

Link to comment
Share on other sites

Deja la función así:

Function CalculoHHMM(intMinutos As Integer) As Double
CalculoHHMM = intMinutos / 1440
End Function[/CODE]

Y dale formato a la celda: [b][color=#ff0000] [size=4][h]:mm[/size][/color][/b][size=4]

Piensa, que a pesar de ver el resultado en horas, el valor real, o sea el numérico, está en días.[/size]

.

Link to comment
Share on other sites

En las tablas el valor está definido cómo número entero. Se almacenan minutos en partes de trabajo que luego, en informes en consultas sql pretendo transformar a hh:mm. El problema llega cuando la acumulación de minutos sobrepasa las 24horas... es ahí donde no consigo que la función devuelva la suma completa de horas.

Link to comment
Share on other sites

Bueno, he hecho una pequeña chapucilla, pero claro, es eso, una chapucilla:

Function Minutillos(Minutes As Integer) As String

 Dim Dias As Integer

 Dias = Int(([Minutes] \ 60) \ 24)

 If Dias < 1 Then

 Minutillos = Format(([Minutes] \ 60) Mod 24, "00") & ":" & Format([Minutes] Mod 60, "00")

 Else

 Diitas = Int(([Minutes] \ 60) \ 24) * 24
 Horitas = ([Minutes] \ 60) Mod 24
 Minutitos = Format([Minutes] Mod 60, "00")
 HorasFin = Format((Horitas + Diitas), "00")
 Minutillos = HorasFin & ":" & Minutitos


 End If

Es un poco cursi el código, pero no tenía gana de estrujarme los sesos con los nombres...jejeje.

El problema que encuentro es que Minutillos es de tipo String, si pongo tipo Date (cómo varios ejemplos que he visto por ahí) me falla la función...

A ver si alguien la puede echar un ojo y me dice cómo mejorarla.

Gracias.

Link to comment
Share on other sites

A mi me ha salido esto:


Function ConvertirMinutos(Minutos As Integer) As String
m = Minutos Mod 60
h = (Minutos - m) / 60
ConvertirMinutos = h & ":" & Format(m, "00")
End Function

[/CODE]

Por cierto, ¿ Porqué conviertes los minutos a días ? Simplemente, dividiendo los minutos por 60 obtienes el número de horas y con el resto obtienes los minutos.

.

Link to comment
Share on other sites

Muchísimas gracias!!

Por cierto, ¿ Porqué conviertes los minutos a días ? Simplemente, dividiendo los minutos por 60 obtienes el número de horas y con el resto obtienes los minutos.

Pues no lo sé la verdad. Se me ocurrió en un momento de desesperación, jejeje.

Gracias por todo.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Guest
This topic is now closed to further replies.
  • 41 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Files

  • Download Statistics

    • Files
      155
    • Comments
      89
    • Reviews
      25

    Latest File
    By pegones1

    2    0

  • Crear macros Excel

  • Posts

    • macro para elegir carpeta origen, destino y copia recursiva de archivos .    El problema que presenta es que cuando debería de salir de un menú inicial para seleccionar entre 4 opciones,  y acto seguido pasarle un valor selecionado como carpeta origen al modulo principal.  Acto seguido debería de solicitar una carpeta destino . La comprobacion de la existencia de los archivos se realiza desde un segundo archivo excel, haciendose la comprobacion en la carpeta origen y en todas sus subcarpetas de manera que todo aquel archivo que exista en carpeta origen o subcarpetas y aparezca su nombre en el segundo archivo excel será copiado en la carpeta destino.     VENTANAS EXPLORADOR WINDOWS_v2.xlsm
    • Muchas gracias Victor por tu respuesta! En la hoja "Control" coloque los filtros Hour Type y Workplace.  La formula que me pasaste me sirve para poder seguir avanzando, mucha gracias! Voy a ver de puedo aplicar los filtros que requiero para continuar. De igual manera dejo un ejemplo de lo que querría que me traiga: Filtros aplicados: Hour type: "Total" Workplace: "Obra Ruta 23" Employee: Bernardo Banta celda: G15 de hoja "Control" Objetivo: Que, por los siguientes datos: Fecha (G10), Persona (C15), Workplace (AF6) y hour type (AF4), traiga el resultado de horas trabajadas ("7,25" correspondiente a la suma de los registros 5 y 6 de la hoja "2023" coloreados en naranja). A su vez, si cambio el filtro de tipo de hora es "normal", que solo aparezca las horas normales (7)y no los overtime(0,25).   Check in control.xlsx    
    • ................y bueno, sólo como pequeño ejemplo, esta fórmula: =SUMAPRODUCTO(($C15='2023'!$D$2:$D$76)*(E$10='2023'!$A$2:$A$76)*'2023'!$I$2:$I$76) introducida en E15 de la hoja 'Control', te devolvería el total de horas (columna I de la hoja '2023'), del día correspondiente a la columna (E10), y el empleado de esa fila (en este caso, Bernardo Banta). Si copias la fórmula horizontal y verticalmente, tendrás los mismos resultados, por día y empleado. ? ? Saludos,
    • Hola, @ArNurSanti. Sólo 2 cosas: 1).  Si seleccionas  el rango A2:A76, haces clic en la hoja 'Datos', seleccionas 'Texto en columnas', 'Finalizar', el rango se transformará [como por arte de magia] en fechas reconocidas por Excel. 2).  La fórmula que tienes en C15 de la hoja 'Control' la puedes cambiar por: ='2023'!N2# que es más corta y da los mismos resultados. - - - - - - - - - - - - - - - - - - - A partir de aquí, creo que lo más conveniente es que vuelvas a subir el archivo con algunos de los resultados que esperas introducidos a mano para entender fondo y forma del problema; hablas de filtros por horas normales, extras, pero al menos yo no tengo claro cómo identificar esas variables, al igual que dónde están situados tales filtros (sólo veo un desplegable para elegir mes). Saludos,
    • Buenos días,   Mi situación es la siguiente, y de antemano agradezco todo tipo de ayuda me que me puedan aportar: Estoy trabajando en el armado de una plantilla Excel en donde pueda visualizarse, mediante filtros aplicables por el usuario, las horas trabajadas normales, las horas extras, las horas extras al 200%. Toda esta información la importo al Excel desde una aplicación que usamos en la empresa y se expresa tal cual se ve en la primera hoja("2023", Columna A - M, los datos de las columnas N y O son agregados mios). El problema radica en el armado de una formula valide varios datos y que exprese las horas indicadas en la base de datos según la siguiente información :   - Fecha  - Empleado  -  Filtro Lugar de trabajo (Workplace) -  Filtro Tipo de hora (hour type) Mas específicamente se me complica en el hecho de que la fecha de la primera columna que importo de nuestro sistema, el excel no me la reconoce como fecha (Se puede ver en el ejemplo J15 de la hoja "Control" donde uso =O(J10='2023'!A7)  ) Por otra parte no sabría como hacer la validacion multiple segun los filtros indicado; y en el caso de que el filtro sea "Todo", se haga la suma de las horas normales + extras. Muchas gracias         Check in control.xlsx
  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Privacy Policy