Funciones matemáticas de VBA
22 agosto, 2011 1 comentario
VBA cuenta con funciones matemáticas propias que podemos utilizar en nuestros procedimientos:
Abs(número)–>Valor absoluto
Atn(número)–>Arcotangente de un número
Cos(número)–>Coseno
Exp(número)–>número e como base de los logaritmos naturales
Fix(número)–>La pasrte entera de un número decimal*
Hex(número)–>El valor hexadecimal de un número
Int(número)–>Parte entera del número*
Oct(número)–>El valor octal de un número
Rnd(número)–>Número aleatorio ente 0 y 1.
Sgn(número)–>El signo del número
Sqr(número)–>Raiz cuadrada
Sin(número)–>Seno
Tan(número)–>Tangente
(*) La función Fix(n) nos devuelve la porción entera del número. Si este es negativo, Fix devuelve el primer entero negativo que es mayor que ese número. La función Int(n) nos devuelve el primer entero negativo que es menor o igual que el número.
La función Rnd(número) genera un número aleatorio entre 0 y 1 con las opciones siguientes:
si número <0 Repite el mismo número cada vez
si número=0 El número generado más reciente
si número>0 El siguiente número aleatorio en la secuencia.
Le inserto aquí un código para que compruebe los resultados.
Sub prueba()
Dim i As Byte
Dim j As Integer
principio:
j = Int(Val(InputBox(«Escoja un número positivo «, «Función Random»)))
If j < 0 Then
MsgBox «Error debe escoger un número positivo»
GoTo principio
Exit Sub
Else
For i = 1 To 15
Cells(i, 1) = Rnd(-j)
Cells(i, 2) = Rnd(0)
Cells(i, 3) = Rnd(j)
Next
End If
End Sub
La necesidad de trabajar con números aleatorios surge muy a menudo. A veces necesitamos trabajar con un abanico más amplio que de 0 a9. Aquí le expongo la fórmula que ha de emplear en tal caso:
Int((superior-inferior)*Rnd + inferior
Ejemplo número aleatorio entre 25 y 100
Sub prueba2()
Cells(1, 1) = Int((100 – 25) * Rnd + 25)
End Sub