jueves, 2 de mayo de 2019

VAN a tipo variable

Puede descargar el archivo VanTir.xlsm

El Valor Actual Neto (VAN) habitualmente se calcula utilizando un tipo de interés fijo. En esta ocasión vamos a calcular el VAN utilizando una tasa de descuento variable. Lo haremos montando en Excel una tabla con los factores de descuento y usando la función SUMAPRODUCTO para calcular el valor actual. También afrontaremos la resolución utilizando una función programada por el usuario denominada VANvariable. Veamos los dos métodos.

Método 1 (resolución manual)

Como datos manejamos la columna C con los flujos de caja y la columna D con la tasa de descuento k. Se ha de cumplir que si los flujos de caja comienzan en t=0 con el desembolso inicial y terminan en t=n con el último flujo de caja, podamos disponer de n tasas de descuento, uno por cada periodo, salvo el instante t=0 donde no se requiere ninguna tasa de descuento. 


La columna D contiene la tasa de descuento k.



La función SUMAPRODUCTO multiplica por parejas los flujos de caja por el factor de descuento.

Método 2 (programando una función)

La función programada VANvariable no incluye el desembolso inicial que se ha de sumar fuera de la función. En nuestro ejemplo sumamos los -4.000 € que al ser negativo minoran el valor obtenido.


Veamos el código.

Function VANvariable(flujos As Range, tasas As Range) As Double
'tasas es el rango donde se encuentran las tasas de descuento
'Los flujos de caja son todos menos el desembolso inicial
Dim n As Long
Dim fDto As Double 'factor de capitalización
Dim VA As Double 'Valor Actual
'n = nº de celdas que contienen los flujos de caja, NO incluido el desembolso inicial
n = flujos.Rows.Count
VA = 0 'inicializamos el VA a cero
If n = tasas.Rows.Count Then
  fDto = 1 'inicialmente el factor de descuento es 1
  For i = 1 To n
    fDto = fDto / (1 + tasas(i)) 'el factor de descuento es acumulativo
    VA = VA + flujos(i) * fDto
  Next i
Else
  'mensaje que sale si el nº de filas de los rangos tasas y flujos no coincide
  VANvariable = "rangos no coinciden"
End If
VANvariable = VA
End Function