jueves, 12 de enero de 2017

VBA: Números de Fibonacci en Excel

Hace algún tiempo publiqué como conseguir un listado de números primos (ver post).
Hoy veremos otro clásico atemporal: La Sucesión de Fibonacci.
Puedes leer algo más en Wikipedia.

Básicamente es una secuencia creciente de números enteros naturales donde cada valor es la suma de los dos anteriores, siendo los dos primeros elementos de la Sucesión el 0 y el 1, así:
0, 1, 1, 2, 3, 5, 8, 13, 21, etc...


Emplearemos una macro, basándonos en el algoritmo de la Sucesión y nuevamente empleando Arrays para componer nuestro procedimiento.

Insertaremos el siguiente procedimiento en un módulo estándar de nuestro proyecto de VB:

Sub SucesionFibonacci()
Dim f0 As Long, f1 As Long, elementos As Integer
f0 = 0: f1 = 1
elementos = 25
'dimensionamos nuestra Array al número de elementos deseados
ReDim Fib(1 To elementos) As Long

'Rellenamos la matriz con los elementos de la Serie de Fibonacci
Fib(1) = f0     'asignamos dato al primer valor
Fib(2) = f1     'asignamos dato al segundo valor
For i = 3 To UBound(Fib)
    Fib(i) = f0 + f1    'Calcula el dato como suma de un elemento más el anterior
    'hacemos la recurrencia para los siguientes elementos
    f0 = f1
    f1 = Fib(i)
Next i

'Generamos un MsgBox para ver la secuencia de Fibonacci
txt = ""
For elto = 1 To UBound(Fib)
    txt = txt & elto & vbTab & Fib(elto) & vbTab & vbCrLf
Next elto
'Mostramos el sucesión generada...
mensaje = MsgBox(txt, , "Sucesión Fibonacci")

End Sub



Si lanzamos la macro veremos:

VBA: Números de Fibonacci en Excel



Obviamente podríamos haber obtenido nuestra Sucesión de Fibonacci con una sencilla fórmula en nuestra hoja de cálculo.
Disponemos en A1 el valor 0
en A2 el valor 1
y en A3 la fórmula =A1+A2
para luego arrastrar hacía abajo..

VBA: Números de Fibonacci en Excel



En ambas formas habrá que tener precaución con el límite de precisión de Excel (15 dígitos), ya que a partir del elemento 75, la precisión de Excel nos devolverá valores incompletos o no válidos.

3 comentarios:

  1. Respuestas
    1. Hola que tal William,
      no parece necesario.. simplemente copia y pega

      Saludos

      Eliminar
  2. Te paso enlace de una foto donde intentanto descubrir quer eran o que representaban, me salió la Sucesión de Fibonacci
    https://www.flickr.com/photos/23795009@N04/22106339673/in/dateposted-ff/

    ResponderEliminar