Excel - Programar función para cálculo basado en condiciones

 
Vista:
sin imagen de perfil

Programar función para cálculo basado en condiciones

Publicado por Luis (3 intervenciones) el 27/07/2015 17:18:52
Buenos días

No sé mucho del tema de macros y programación, aunque estoy muy interesado en aprender de estos temas. como parte de mis tareas necesito hacer cálculos de los impuestos al salario que deben retenerse a los empleados y se me ocurrió hacer una función en excel que haga más eficiente el cálculo, en la práctica el tema de las retenciones se maneja así

a. si ud gana menos de 750.000 no paga nada.
b. si ud gana entre 754.000 y 1.100.000 paga un 10% de la diferencia entre esos dos montos
c. Si gana más de 1.100.000 paga el 15% de lo que gane sobre 1.100.000 más el punto b.

Por ejemplo: si ud gana 800.000 pagaría 4.600 (800.000-754.000)*10% = 4.600.

Si ud gana 1.200.000 pagaría 49.600 (34.600+15.000) esto sale de (1.100.000-754.000)*10% + (1.200.000-1.100.000)*15%

por ende yo quería programar una función con variables, pues cada año los montos cambian

y plantee la siguiente función:

Function ISR_Salario(SB, BI1, PBI1, BI2, PBI2)

If SB <= BI1 Then
ISR_Salario = 0
Else
If SB >= BI2 Then
ISR_Salario = ((BI2 - BI1) * PBI1) + (BI2 - SB) * BI2
Else
ISR_Salario = (SB - BI1) * PBI1
End If

End Function


Sé que esta mala porque me da un error, pero queria que ustedes me ayudaran a programarla y afinarla para poder tenerla funcional.


Les agradezco su ayuda en este problema.


Muchas gracias


Luis Araya
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Programar función para cálculo basado en condiciones

Publicado por TPA (6 intervenciones) el 27/07/2015 22:36:16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Function A_Pagar_Toca(SB As Double, BI1 As Double, PBI1 As Double, BI2 As Double, PBI2 As Double) As Double
'-------------------------------------------------------
'-- Tributamos impuestos, 2 tramos de tributacion.
'-------------------------------------------------------
'-- SB   = Salario Bruto a ser calculada su tributacion.
'-- BI1  = Tramo BI1 <= x < BI2.
'-- PBI1 = Porcentaje de tributacion de tramo 1.
'-- BI2  = Tramo BI2 <= x.
'-- PBI2 = Porcentaje de tributacion de tramo 2.
'-------------------------------------------------------
 
' Usamos una variable temporal para almacenar las diferentes tributaciones que le toca ir pagando
  Dim Suma As Double
 
'-- Al principio... paga cero...jejeje
  Suma = 0
 
'-- Comprobamos el primer tramo de tributacion
  If SB >= BI1 Then
     Suma = Suma + (SB - BI1) * PBI1
  End If
 
'-- Comprobamos el segundo tramo de tributacion
  If SB >= BI2 Then
     Suma = Suma + (SB - BI2) * BI2
  End If
 
'--Retornamos el valor que toca a tributar a la variable de la funcion... y listo
  A_Pagar_Toca = Suma
 
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Programar función para cálculo basado en condiciones

Publicado por Luis (3 intervenciones) el 29/07/2015 19:21:48
Perfecto

Funcionó excelente

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Programar función para cálculo basado en condiciones

Publicado por Alabardero (9 intervenciones) el 28/07/2015 23:18:22
A ver que te parece. Por favor escribe lo que te digo en una hoja:
Celda c2: 1.200.000 (El dinero que ha ganado, p.ej 1.200.000)
Celda c4: 754.000 (El primer límite, que en este caso son 754.000)
Celda d4: 10% (El primer porcentaje, que en tu ejemplo es 10%)
Celda c5: 1.100.000 (El segundo límite)
Celda d5: 15% (El segundo porcentaje)

Y ahora la fórmula:
Celda c7: =SI(C2>C5;(C5-C4)*D4+(C2-C5)*D5;SI(C2>C4;(C2-C4)*D4;0))

Verás que el resultado en la c7 es 49.600
por supuesto puedes cambiar cualquier cifra o porcentaje y seguirá funcionando.

Espero haberte ayudado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Programar función para cálculo basado en condiciones

Publicado por Luis (3 intervenciones) el 29/07/2015 18:24:41
Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar