• Inicio
  • Programas
  • Excel
  • Depreciación (regularización) de bienes estatales en excel con macros vba fórmula UDF

Depreciación (regularización) de bienes estatales en excel con macros vba fórmula UDF

Con frecuencia se cometen errores en el sistema contable estatal, sobre todo en el calculo de depreciaciones con fines de inventario, para resolver este problema he creado un par fórmulas UDF para excel utilizando macros vba que simplifica la tarea de calcular la depreciación lineal y regularizar las que están mal calculadas o tuvieron errores en periodos anteriores que no fueron detectados.

Hago la observación que esta fórmula se rige con el sistema contable de Perú el cual indica que la depreciación empieza en el mes siguiente a la compra del bien.

Este macro y los ejemplos esta disponible para su descarga directa y gratuita, a cambio y como favor les pediría que verifiquen las cifras y hagan pruebas con la fórmula con el fin de seguir desarrollándola y publicando actualizaciones, les aseguro que ahorrará mucho tiempo y equivocaciones.

depreciacion-excel

A continuación les dejo las instrucciones de las fórmulas:

Cálculo de depreciaciones para bienes estatales versión 1.0

Fórmula =DEPINV(fecha adquisición, fecha cierre, tasa de depreciación anual, valor de compra, valor residual, tipo)

fecha adquisición = Fecha de compra del bien (fecha de PECOSA)
fecha cierre = Fecha fin de inventario
tasa de depreciación anual = En porcentaje
valor de compra = Valor histórico de compra o en libros
valor residual = El valor final del bien (generalmente es 1 despues de quedar totalmente depreciado)
tipo = valor entero para obtener los siguientes datos:

  • 0 = Depreciación del periodo (anual)
  • 1 = Depreciación acumulada (años anteriores)
  • 2 = Número de meses para calcular la depreciación del periodo
  • 3 = Número de meses para calcular la depreciación acumulada
  • 4 = Número de meses transcurridos desde la compra hasta la fecha de cierre o hasta el máximo posible
Function DEPINV(fecha_compra As Date, fecha_cierre As Date, tasa_anual As Single, valor_compra As Single, valor_residual As Integer, tipo As Integer) As Variant

Dim mestot As Integer
Dim mesmax As Integer
Dim mesdif As Integer
Dim mesacu As Integer
Dim deprper As Variant
Dim depracu As Variant

mestot = DateDiff("m", fecha_compra, fecha_cierre)

If (12 / tasa_anual) < mestot Then
mesmax = 12 / tasa_anual
Else
mesmax = mestot
End  If
mesdif = mestot - mesmax
If mesdif >= 12 Then
mesper = 0
Else
    If mesdif > 0 And mesdif < 12 Then
    mesper = 12 - mesdif
    Else
         If mesmax < 12 Then
         mesper = mesmax
         Else
         mesper = 12
         End If
    End If
End If

mesacu = mesmax - mesper

If mesmax >= 0 And valor_compra >= valor_residual Then

    deprper = (((valor_compra - valor_residual) * tasa_anual) / 12) * mesper
    
    If mesper = 0 And mesmax > 0 Then
    depracu = valor_compra - valor_residual
    Else
    depracu = (((valor_compra - valor_residual) * tasa_anual) / 12) * mesacu
    End If

Else

    deprper = CVErr(xlErrNull)
    depracu = CVErr(xlErrNull)

End If

Select Case tipo

Case 0 'depreciación del periodo
DEPINV = deprper
Case 1 'depreciación acumulada
DEPINV = depracu
Case 2 'meses para periodo
DEPINV = mesper
Case 3 'meses para acumulado
DEPINV = mesacu
Case 4 'meses transcurridos desde la compra hasta la fecha de cierre o hasta el máximo posible
DEPINV = mesmax
End Select

End Function

Cálculo de depreciaciones para bienes estatales cuando ya se tiene depreciación acumulada (para regularizar las depreciaciones) versión 1.0

Fórmula =DEPINV2(fecha compra, fecha cierre, tasa de depreciación anual, valor compra, valor neto anterior, valor residual, tipo)

fecha adquisición = Fecha de compra del bien (fecha de PECOSA)
fecha cierre = Fecha fin de inventario
tasa de depreciación anual = En porcentaje
valor compra = Valor de compra o en libros
valor neto anterior = Valor neto de inventario anterior
valor residual = El valor final del bien (generalmente es 1 después de quedar totalmente depreciado)
tipo = valor entero para obtener los siguientes datos:

  • 0 = Depreciación del periodo (anual)
  • 1 = Depreciación acumulada (años anteriores)
  • 2 = Número de meses para calcular la depreciación del periodo
  • 3 = Número de meses para calcular la depreciación acumulada
  • 4 = Número de meses transcurridos desde la compra hasta la fecha de cierre o hasta el máximo posible
Function DEPINV2(fecha_compra As Date, fecha_cierre As Date, tasa_anual As Single, valor_compra As Single, valor_neto_anterior As Single, valor_residual As Integer, tipo As Integer) As Variant

Dim mestot As Integer
Dim mesmax As Integer
Dim mesdif As Integer
Dim mesacu As Integer
Dim deprper As Variant
Dim depracu As Variant
Dim depracureal As Variant

mestot = DateDiff("m", fecha_compra, fecha_cierre)

If (12 / tasa_anual) < mestot Then
mesmax = 12 / tasa_anual
Else mesmax = mestot
End If
mesdif = mestot - mesmax
If mesdif >= 12 Then
mesper = 0
Else
    If mesdif > 0 And mesdif < 12 Then
    mesper = 12 - mesdif
    Else
         If mesmax < 12 Then
         mesper = mesmax
         Else
         mesper = 12
         End If
    End If
End If

mesacu = mesmax - mesper

depracureal = valor_compra - valor_neto_anterior 
depracu = (((valor_compra - valor_residual) * tasa_anual) / 12) * mesacu
deprper = (((valor_compra - valor_residual) * tasa_anual) / 12) * mesper

If mesmax >= 0 And valor_compra > 0 And depracureal >= 0 And tasa_anual > 0 Then
    
    If valor_neto_anterior > valor_residual Then
    
        If depracureal > depracu Then

        monto_a_igualar = depracureal - depracu
        deprper = deprper - monto_a_igualar
            
        ElseIf depracureal = depracu Then
        
        ElseIf depracureal < depracu Then

        monto_a_igualar = depracu - depracureal
        deprper = monto_a_igualar + deprper
        
        End If
    
    ElseIf valor_neto_anterior = valor_residual Then
    
        If mesmax = 12 / tasa_anual Then
        deprper = 0
        depracureal = valor_compra - valor_residual
        Else
        monto_a_igualar = depracureal - depracu
        deprper = deprper - monto_a_igualar
        End If
    
    ElseIf valor_neto_anterior < valor_residual Then

        If valor_neto_anterior = 0 And valor_compra > 0 And mesmax = 0 Then
        depracureal = 0
        Else
        deprper = CVErr(xlErrNull)
        depracureal = CVErr(xlErrNull)
        End If

    End If

Else

    deprper = CVErr(xlErrNull)
    depracureal = CVErr(xlErrNull)

End If

Select Case tipo

Case 0 'depreciación del periodo
DEPINV2 = deprper
Case 1 'depreciación acumulada real
DEPINV2 = depracureal
Case 2 'meses para periodo
DEPINV2 = mesper
Case 3 'meses para acumulado
DEPINV2 = mesacu
Case 4 'meses transcurridos desde la compra hasta la fecha de cierre o hasta el máximo posible
DEPINV2 = mesmax
End Select

End Function

Para terminar dejo el archivo para bajar y los saludo cordialmente, estén atentos a las actualizaciones, espero sus comentarios.

Etiquetas:, , , , , ,

"Trackback" Enlace desde tu web.

M. Vizcarra

Ing. Industrial, egresado de la Facultad de Ingeniería Industrial y de Sistemas de la Universidad Nacional Hermilio Valdizán de Huánuco, Perú.

Deja un comentario