numero con decimales restar enteros

09/01/2005 - 02:24 por tc | Informe spam
Hola a todos,

Tengo un problema que no se como solucionar.
He hecho 12 hojas de Excel, una por cada mes del año, con diferentes celdas,
en las que se recogen datos de cada una de las personas que forman parte de
la empresa, datos referentes a la asistencia al trabajo: días de vacaciones,
bajas por enfermedad, horas extras, etc.

En donde se me plantea el problema es en las horas extras. Las tengo
reflejadas en minutos, ya que no se computan por horas completas, sino que
una persona puede hacer fracciones, después lo convierto en horas. Lo que
no se como hacer es restar las horas completas al total de horas extras
computadas... y que el resto, es decir, los minutos que quedan para
completar una hora entera se arrastren directamente al mes siguiente:

Por ejemplo: Enero: una persona en total tiene 8 horas y 47 minutos.
lo que quiero es restar las 8 horas y que los 47
minutos restantes
de forma automática se queden anotados en la hoja de
febrero.

Por favor, podéis ayudarme.
gracias y saludos

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
09/01/2005 - 08:07 | Informe spam
hola, tc !

... se me plantea el problema ... en las horas extras ... reflejadas en minutos ... lo convierto en horas.
... restar las horas completas ... y que ... los minutos que quedan ... se arrastren ... al mes siguiente:
... ejemplo: enero: una persona ... tiene 8 horas y 47 minutos.
... restar las 8 horas y que los 47 minutos restantes ... queden anotados en la hoja de febrero.



con los siguientes 'supuestos'...
-> los nombres de las personas son 'coincidentes' [misma fila] en todas las hojas [1er dato en enero!A2]
-> los minutos 'totales' [en cada hoja] en la columna 'E' [1er dato EN MINUTOS -enteros- en E2]
[p.e. las 8 horas con 47 minutos 'equivalen' en numeros enteros a: 527] ok?
-> se obtienen las horas [enteras] en la columna 'F'
-> se obtienen los minutos [restantes] en la columna 'G'
-> puedes usar las siguientes formulas: => modifica 'donde sea necesario' <hoja enero:
[F2] =entero(e2/60)
[G2] â-(f2*60)
hoja febrero [y subsiguientes cambiando el nombre de cada mes a su mes 'anterior']:
[F2] =entero((enero!g2+e2)/60)
[G2] =enero!g2+e2-(f2*60)
-> como lo verdaderamente 'fastidioso' seria [tener que] estar cambiando el nombre de cada 'hoja/mes anterior'...
podrias definir una funcion personalizada que 'obtenga' un rango de la hoja anterior [te pongo el codigo al final]
y utilizarla ->a partir de la segunda hoja<- p.ej.
hoja febrero [y subsiguientes cambiando el nombre de cada mes a su mes 'anterior']:
[F2] =entero((HojaPrevia(g2)+e2)/60)
[G2] =HojaPrevia(g2)+e2-(f2*60)

si cualquier duda... ¿comentas datos adicionales?
saludos,
hector.

la funcion HojaPrevia en un modulo de codigo 'normal' ==Public Function HojaPrevia(Optional Referencia As Range)
Dim Hoja_n As Integer
If Referencia Is Nothing Then Set Referencia = Application.Caller
Hoja_n = Referencia.Parent.Index
If Hoja_n > 1 _
Then Set HojaPrevia = Worksheets(Hoja_n - 1).Range(Referencia.Address) _
Else HojaPrevia = CVErr(xlErrRef)
End Function

comentarios 'adicionales':
1.- si la funcion 'se llama' EN la primera hoja de calculo del libro... devuelve el valor de error #¡REF!
2.- si se omite el argumento 'Referencia'... devuelve 'la misma celda' [donde se usa] de la hoja 'anterior'
Respuesta Responder a este mensaje
#2 Héctor Miguel
09/01/2005 - 08:17 | Informe spam
hola [de nuevo] :)

con relacion a la funcion [aunque estara 'forzando' a un recalculo del modelo] :(( ...
sera necesario agregar la siguiente instruccion [como primera o segunda linea en el codigo]...
Application.Volatile

saludos,
hector.
Respuesta Responder a este mensaje
#3 tc
09/01/2005 - 17:29 | Informe spam
Gracias Héctor Miguel !!!!
Problema solucionado
Ha funcionado a la perfección. Te lo agradezco.
tac


"Héctor Miguel" escribió en el mensaje
news:
hola, tc !

> ... se me plantea el problema ... en las horas extras ... reflejadas en


minutos ... lo convierto en horas.
> ... restar las horas completas ... y que ... los minutos que quedan ...


se arrastren ... al mes siguiente:
> ... ejemplo: enero: una persona ... tiene 8 horas y 47 minutos.
> ... restar las 8 horas y que los 47 minutos restantes ... queden


anotados en la hoja de febrero.

con los siguientes 'supuestos'...
-> los nombres de las personas son 'coincidentes' [misma fila] en todas


las hojas [1er dato en enero!A2]
-> los minutos 'totales' [en cada hoja] en la columna 'E' [1er dato EN


MINUTOS -enteros- en E2]
[p.e. las 8 horas con 47 minutos 'equivalen' en numeros enteros a:


527] ok?
-> se obtienen las horas [enteras] en la columna 'F'
-> se obtienen los minutos [restantes] en la columna 'G'
-> puedes usar las siguientes formulas: => modifica 'donde sea


necesario' <> hoja enero:
[F2] =entero(e2/60)
[G2] â-(f2*60)
hoja febrero [y subsiguientes cambiando el nombre de cada mes a su mes


'anterior']:
[F2] =entero((enero!g2+e2)/60)
[G2] =enero!g2+e2-(f2*60)
-> como lo verdaderamente 'fastidioso' seria [tener que] estar cambiando


el nombre de cada 'hoja/mes anterior'...
podrias definir una funcion personalizada que 'obtenga' un rango de la


hoja anterior [te pongo el codigo al final]
y utilizarla ->a partir de la segunda hoja<- p.ej.
hoja febrero [y subsiguientes cambiando el nombre de cada mes a su mes


'anterior']:
[F2] =entero((HojaPrevia(g2)+e2)/60)
[G2] =HojaPrevia(g2)+e2-(f2*60)

si cualquier duda... ¿comentas datos adicionales?
saludos,
hector.

la funcion HojaPrevia en un modulo de codigo 'normal' ==> Public Function HojaPrevia(Optional Referencia As Range)
Dim Hoja_n As Integer
If Referencia Is Nothing Then Set Referencia = Application.Caller
Hoja_n = Referencia.Parent.Index
If Hoja_n > 1 _
Then Set HojaPrevia = Worksheets(Hoja_n - 1).Range(Referencia.Address)


_
Else HojaPrevia = CVErr(xlErrRef)
End Function

comentarios 'adicionales':
1.- si la funcion 'se llama' EN la primera hoja de calculo del libro...


devuelve el valor de error #¡REF!
2.- si se omite el argumento 'Referencia'... devuelve 'la misma celda'


[donde se usa] de la hoja 'anterior'


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida