Pregunta:
¿Que formula matemática se utiliza para convertir una hora a decimales y luego a horas nuevamente?
Ariel C
2006-08-04 06:40:31 UTC
Tengo el siguiente problema:

Alrededor de 5,000,000 de registros en un archivo plano que tienen la hora en formato HHMM pero sin el separador de dos puntos, entonces yo lo que estoy haciendo es insertarle los dos puntos desde visual basic, cada registro tiene 8 campos de hora y tengo que restar uno contra el otro, pero visual basic me manda error de campo, como indicando que no se pueden restar strings, asi que necesito saber como puedo hacer para que convirtiendo esos strings a valor numerico con la funcion val() pueda convertirlos a su correspondiente numérico, de alli, hacer la operacion de resta y el resultado volver a ponerlo en forma de hora.

Gracias.
Tres respuestas:
ignacionr2
2006-08-04 07:34:24 UTC
A ver... por qué no trabajás con minutos, que es más fácil. Suponete que recibís un valor de tipo HHMM pasado a entero:



Function HHMMaMinutos(hhmm As Integer) As Integer

Dim hh As Integer, mm As Integer

hh = CInt(hhmm / 100)

mm = hhmm MOD 100

HHMMaMinutos = hh * 60 + mm

End Function



Después podés sumar o restar los minutos como te guste...
Luis Lezama
2006-08-05 07:40:04 UTC
Investiga que el tipo de dato Unix TimeStamp, verás que es mas fácil restar tipos de datos TimeStamp, puesto que son numeros reales, donde la parte entera es la suma de días a partir de una fecha (creo que 1900) y la parte decimal es el resultado de hh:mm:ss:mil
anonymous
2006-08-04 08:46:17 UTC
'COLOCA LAS HORAS EN FORMATO DE TEXTO DE LA CELDA C3 HASTA

'LA CELDA J8. C3='0130, D3='0540, E3='1415...

'COPIA EL SIGUIENTE MACRO Y CÓRRELO.

'ESPERO TE SIRVA.







Sub HORA()







Range("B5").Select

For J = 1 To 4

ActiveCell.Offset(-2, 1).Select

A = ActiveCell



'INSERTAR LOS DOS PUNTOS ( : )



AA = (Left(A, 2) & ":" & Right(A, 2)) 'AL REALIZAR ESTA OPERACIÓN

'EL FORMATO SE CONVIERTE EN NÚMERICO. 'Y SE PUEDEN HACER OPERACIONES SIN NECESIDAD DE CONVERTIR A DECIMALES.

ActiveCell.Offset(1, 0).Select

ActiveCell = AA

ActiveCell.Offset(-1, 1).Select

B = ActiveCell

BB = (Left(B, 2) & ":" & Right(B, 2))

ActiveCell.Offset(1, 0).Select

ActiveCell = BB

ActiveCell.Offset(1, 0).Select

ActiveCell = ActiveCell.Offset(-1, 0) - ActiveCell(0, 0)



Next



Range("A1").Select



End Sub


Este contenido se publicó originalmente en Y! Answers, un sitio web de preguntas y respuestas que se cerró en 2021.
Loading...