!!! Hola !!!
En esta entrada voy a mostrar como es que se generan numeros aleatorios en Excel.
Si no sabes lo que es un numero aleatorio, te dire que son numeros al azar.
Como cuando tu le dices a alguien. "Dime un numero cualquiera entre 1 y 100"
Y para que sirven los numeros aleatorios?
Tal vez estes creando un juego en Excel donde tienes que adivinar un numero generado por el programa.
Quizas desees recrear el juego de bingo, para lo cual es necesario que se muestren numeros al azar.
Es posible que tengas un cuestionario de 100 preguntas de un examen y trates de automatizar el proceso para que a cada estudiante le asignen diez de esas preguntas al azar.
Y si solo quieres aprender un poco mas acerca de las capacidades de Microsoft Excel?, ese seria un buen motivo para leer e implementar los ejemplos que se muestran mas adelante.
Generando numeros aleatorios usando la interfaz de Excel
Microsoft Excel cuenta con dos funciones que permiten generar numeros aleatorios:
ALEATORIO (RAND) - Devuelve un numero aleatorio entre 0 y 1.
Ejemplo - En la celda A1 escribe la siguiente formula
=ALEATORIO()
Te devolvera un numero (no se cual, nadie lo sabe - por eso es aleatorio) entre 0 y 1
ALEATORIO.ENTRE (RANDBETWEEN) - Devuelve un numero entero aleatorio comprendido entre los argumentos
Ejemplo - En la celda A1 escribe la siguiente formula
=ALEATORIO.ENTRE(1, 100)
Te devolvera un numero aleatorio entre 1 y 100
Generando un numero aleatorio comprendido entre 2 rangos no consecutivos.
Excel no incluye funciones que devuelvan valores aleatorios comprendidos entre 2 rangos no consecutivos, sin embargo, con un poco de ingenio esto puede hacerse:
Un numero aleatorio entre [1, 200] o entre [800, 1000]
=SI(ALEATORIO()>0.5, ALEATORIO.ENTRE(1,200), ALEATORIO.ENTRE(800,1000))
Generando numeros aleatorios usando codigo VBA
Los programadores de VBA tienen acceso a las mismas funciones de la hoja de trabajo ya explicadas. desde el objeto Application.WorksheetFunction, usando los nombres en ingles de estas funciones - ver mi entrada Nombre de las funciones de Excel en Ingles dentro de este mismo blog
Application.WorksheetFunction.RAND()
Application.WorksheetFunction.RANDBETWEEN(1,100)
VBA, incluye, ademas la funcion rnd que devuelve un numero aleatorio entre 0 y 1:
rnd().
Tambien podemos emular la funcion ALEATORIA.ENTRE para obtener un numero aleatorio en el rango [a,b): (b-a)*rnd()+a
Eso es todo amigos
Blog destinado a ofrecer ayuda gratuita a los usuarios de Microsoft Excel. Contiene una gran cantidad de articulos distribuidos en categorias para ofrecer un acceso facil a la informacion.
Mostrando las entradas con la etiqueta Avanzado. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Avanzado. Mostrar todas las entradas
domingo, 15 de marzo de 2015
sábado, 14 de marzo de 2015
En letras
!!! Hola amigos !!!
El dia de hoy quiero compartir con todos una funcion que permite que podamos escribir un numero usando palabras.
algo asi como:
donde extracte una seccion simplificada de lo que puede ser un presupuesto de construccion, que es el campo donde me desempeño mejor.
Cualquier usuario de Excel, por nuevo que sea, entiende que si modifico la cantidad o el costo unitario de cualquiera de las actividades, la actualizacion de los subtotales y el costo final es automatica.
Pero lo es tambien el costo total en letras?
Si observas detalladamente el grafico, podras observar en la barra de formulas que la celda activa es en realidad una funcion y no un valor escrito a mano.
Una funcion definida por el usuario que ahora comparto con todos los seguidores del blog.
Solo tienes que agregarla a uno de tus modulos y listo:
Public Function EnLetras(Valor) As String
Dim Centavos As Integer
Dim Fraccion As String
Dim Moneda As String
If Not IsNumeric(Valor) Then
EnLetras = "ERROR"
Exit Function
End If
Moneda = IIf(Int(Abs(Valor)) = 1, " peso", " pesos")
If Right(Letras(Abs(Int(Valor))), 6) = "illon " Or Right(Letras(Abs(Int(Valor))), 8) = "illones " Then Moneda = "de" & Moneda
Centavos = Application.Round(Abs(Valor) - Int(Abs(Valor)), 2) * 100
Fraccion = IIf(Centavos = 1, " centavo", " centavos")
Fraccion = IIf(Centavos = 0, "", " con " & Letras(Centavos) & Fraccion)
EnLetras = Letras(Int(Abs(Valor))) & Moneda & Fraccion
EnLetras = UCase(Left(EnLetras, 1)) & Mid(EnLetras, 2)
If Valor < 0 Then EnLetras = "menos " & EnLetras
End Function
Private Function Letras(Valor) As String
' Funcion Auxiliar de uso exclusivo de la funcion EnLetras
Select Case Int(Valor)
Case 0
Letras = "cero"
Case 1
Letras = "un"
Case 2
Letras = "dos"
Case 3
Letras = "tres"
Case 4
Letras = "cuatro"
Case 5
Letras = "cinco"
Case 6
Letras = "seis"
Case 7
Letras = "siete"
Case 8
Letras = "ocho"
Case 9
Letras = "nueve"
Case 10
Letras = "diez"
Case 11
Letras = "once"
Case 12
Letras = "doce"
Case 13
Letras = "trece"
Case 14
Letras = "catorce"
Case 15
Letras = "quince"
Case Is < 20
Letras = "diez y " & Letras(Valor - 10)
Case 20
Letras = "veinte"
Case Is < 30
Letras = "veinti" & Letras(Valor - 20)
Case 30
Letras = "treinta"
Case 40
Letras = "cuarenta"
Case 50
Letras = "cincuenta"
Case 60
Letras = "sesenta"
Case 70
Letras = "setenta"
Case 80
Letras = "ochenta"
Case 90
Letras = "noventa"
Case Is < 100
Letras = Letras(Int(Valor \ 10) * 10) & " y " & Letras(Valor Mod 10)
Case 100
Letras = "cien"
Case Is < 200
Letras = "ciento " & Letras(Valor - 100)
Case 200, 300, 400, 600, 800
Letras = Letras(Int(Valor \ 100)) & "cientos"
Case 500
Letras = "quinientos"
Case 700
Letras = "setecientos"
Case 900
Letras = "novecientos"
Case Is < 1000
Letras = Letras(Int(Valor \ 100) * 100) & " " & Letras(Valor Mod 100)
Case 1000
Letras = "mil"
Case Is < 2000
Letras = "mil " & Letras(Valor Mod 1000)
Case Is < 1000000
Letras = Letras(Int(Valor \ 1000)) & " mil"
If Valor Mod 1000 Then Letras = Letras & " " & Letras(Valor Mod 1000)
Case 1000000
Letras = "un millon"
Case Is < 2000000
Letras = "un millon " & Letras(Valor Mod 1000000)
Case Is < 1000000000000#
Letras = Letras(Int(Valor / 1000000)) & " millones "
If (Valor - Int(Valor / 1000000) * 1000000) Then
Letras = Letras & Letras(Valor - Int(Valor / 1000000) * 1000000)
End If
Case 1000000000000#
Letras = "un billon"
Case Is < 2000000000000#
Letras = "un billon " & Letras(Valor - Int(Valor / 1000000000000#) * 1000000000000#)
Case Else
Letras = Letras(Int(Valor / 1000000000000#)) & " billones"
If (Valor - Int(Valor / 1000000000000#) * 1000000000000#) Then
Letras = Letras & " " & Letras(Valor - Int(Valor / 1000000000000#) * 1000000000000#)
End If
End Select
End Function
Nota. La funcion no es de mi autoria, tampoco se de quien es. Estuvo dando vuelta en los foros hace un tiempo.
Eso es todo amigos.
El dia de hoy quiero compartir con todos una funcion que permite que podamos escribir un numero usando palabras.
algo asi como:
donde extracte una seccion simplificada de lo que puede ser un presupuesto de construccion, que es el campo donde me desempeño mejor.
Cualquier usuario de Excel, por nuevo que sea, entiende que si modifico la cantidad o el costo unitario de cualquiera de las actividades, la actualizacion de los subtotales y el costo final es automatica.
Pero lo es tambien el costo total en letras?
Si observas detalladamente el grafico, podras observar en la barra de formulas que la celda activa es en realidad una funcion y no un valor escrito a mano.
Una funcion definida por el usuario que ahora comparto con todos los seguidores del blog.
Solo tienes que agregarla a uno de tus modulos y listo:
Public Function EnLetras(Valor) As String
Dim Centavos As Integer
Dim Fraccion As String
Dim Moneda As String
If Not IsNumeric(Valor) Then
EnLetras = "ERROR"
Exit Function
End If
Moneda = IIf(Int(Abs(Valor)) = 1, " peso", " pesos")
If Right(Letras(Abs(Int(Valor))), 6) = "illon " Or Right(Letras(Abs(Int(Valor))), 8) = "illones " Then Moneda = "de" & Moneda
Centavos = Application.Round(Abs(Valor) - Int(Abs(Valor)), 2) * 100
Fraccion = IIf(Centavos = 1, " centavo", " centavos")
Fraccion = IIf(Centavos = 0, "", " con " & Letras(Centavos) & Fraccion)
EnLetras = Letras(Int(Abs(Valor))) & Moneda & Fraccion
EnLetras = UCase(Left(EnLetras, 1)) & Mid(EnLetras, 2)
If Valor < 0 Then EnLetras = "menos " & EnLetras
End Function
Private Function Letras(Valor) As String
' Funcion Auxiliar de uso exclusivo de la funcion EnLetras
Select Case Int(Valor)
Case 0
Letras = "cero"
Case 1
Letras = "un"
Case 2
Letras = "dos"
Case 3
Letras = "tres"
Case 4
Letras = "cuatro"
Case 5
Letras = "cinco"
Case 6
Letras = "seis"
Case 7
Letras = "siete"
Case 8
Letras = "ocho"
Case 9
Letras = "nueve"
Case 10
Letras = "diez"
Case 11
Letras = "once"
Case 12
Letras = "doce"
Case 13
Letras = "trece"
Case 14
Letras = "catorce"
Case 15
Letras = "quince"
Case Is < 20
Letras = "diez y " & Letras(Valor - 10)
Case 20
Letras = "veinte"
Case Is < 30
Letras = "veinti" & Letras(Valor - 20)
Case 30
Letras = "treinta"
Case 40
Letras = "cuarenta"
Case 50
Letras = "cincuenta"
Case 60
Letras = "sesenta"
Case 70
Letras = "setenta"
Case 80
Letras = "ochenta"
Case 90
Letras = "noventa"
Case Is < 100
Letras = Letras(Int(Valor \ 10) * 10) & " y " & Letras(Valor Mod 10)
Case 100
Letras = "cien"
Case Is < 200
Letras = "ciento " & Letras(Valor - 100)
Case 200, 300, 400, 600, 800
Letras = Letras(Int(Valor \ 100)) & "cientos"
Case 500
Letras = "quinientos"
Case 700
Letras = "setecientos"
Case 900
Letras = "novecientos"
Case Is < 1000
Letras = Letras(Int(Valor \ 100) * 100) & " " & Letras(Valor Mod 100)
Case 1000
Letras = "mil"
Case Is < 2000
Letras = "mil " & Letras(Valor Mod 1000)
Case Is < 1000000
Letras = Letras(Int(Valor \ 1000)) & " mil"
If Valor Mod 1000 Then Letras = Letras & " " & Letras(Valor Mod 1000)
Case 1000000
Letras = "un millon"
Case Is < 2000000
Letras = "un millon " & Letras(Valor Mod 1000000)
Case Is < 1000000000000#
Letras = Letras(Int(Valor / 1000000)) & " millones "
If (Valor - Int(Valor / 1000000) * 1000000) Then
Letras = Letras & Letras(Valor - Int(Valor / 1000000) * 1000000)
End If
Case 1000000000000#
Letras = "un billon"
Case Is < 2000000000000#
Letras = "un billon " & Letras(Valor - Int(Valor / 1000000000000#) * 1000000000000#)
Case Else
Letras = Letras(Int(Valor / 1000000000000#)) & " billones"
If (Valor - Int(Valor / 1000000000000#) * 1000000000000#) Then
Letras = Letras & " " & Letras(Valor - Int(Valor / 1000000000000#) * 1000000000000#)
End If
End Select
End Function
Nota. La funcion no es de mi autoria, tampoco se de quien es. Estuvo dando vuelta en los foros hace un tiempo.
Eso es todo amigos.
Etiquetas:
Avanzado,
Excel,
EXCELman,
Funciones.,
VBA
Suscribirse a:
Entradas (Atom)
