miércoles, 31 de octubre de 2012

N!. N factorial en Excel

En una tarea de informática criminológica, el profesor nos ha pedido estimar N! en Excel para cualquier número.
n!=1*2*...*n



La forma más simple sería poner la fórmula =Fact(numero)

Pero aceptemos que para eso mejor consultamos una tabla de factoriales. Otra forma igual de aburrida sería hacerlo por multiplicaciones sucesivas en vertical.

Veamos una forma más interesante. Supongamos que se quiere tener una hoja como la de abajo donde nos localicemos en la celda amarilla  en A1 y en B1 diremos el número al que se le extraerá el factorial.


En nuestro ejemplo deseamos tener algo como lo siquiente:



Bien, el código es el siguiente:



Sub NFactorial()
    ActiveCell.Offset(0, 1).Range("A1").Select  'el cursor se hace a la derecha para extraer la información de b2 y saber hasta que número calculará

    limite = ActiveCell.Value 'asocia el valor de B2 (si efectivamente se empezó en B1) a la variable limite

    ActiveCell.Offset(0, -1).Range("A1").Select 'regresa a A1 para escribir las estimaciones
For N = 1 To limite                                                    ' Inicia el ciclo
'
    ActiveCell.FormulaR1C1 = N                                                          
    ActiveCell.Offset(1, 0).Range("A1").Select
   
Next

    ActiveCell.Offset(-1, 0).Range("A1").Select
    Selection.End(xlUp).Select
    ActiveCell.Offset(1, 1).Range("A1").Select
    ActiveCell.FormulaR1C1 = "=+RC[-1]*R[-1]C[-1]"    'realiza la operacion
    ActiveCell.Offset(1, 0).Range("A1").Select

'
For M = 1 To limite - 2

'
'
    ActiveCell.FormulaR1C1 = "=+RC[-1]*R[-1]C"
    ActiveCell.Offset(1, 0).Range("A1").Select
Valor = ActiveCell.Value

Next

 ActiveCell.Value = "Arriba de esta celda, el factorial buscado"


End Sub


Es una forma más lenta pero más divertida. Por cierto verás que calcula solamente hasta 171.

No hay comentarios:

Publicar un comentario