2013-03-22

Generar números aleatorios entre dos valores con decimales

Title En Excel hay dos funciones para generar número aleatorios:
  1. ALEATORIO, que genera un número aleatorio entre 0 y 1, con hasta 15 decimales. 
  2. ALEATORIO.ENTRE, que genera un número aleatorio entre dos límites especificados.
Pero si necesitamos un número aleatorio entre dos valores con decimales, no podemos usar directamente ALEATORIO.ENTRE pues genera solamente números enteros. Para circunvenir esta limitación, siendo a el límite inferior y b el superior, podemos usar:

=a+ALEATORIO()*(b-a)
Otra opción es multiplicar los dos límites por un 1 seguido de tantos ceros como decimales necesitemos, y luego dividir el resultado por dicho número. Por ejemplo, si necesitamos dos decimales, por cien:

=ALEATORIO.ENTRE(a*100;b*100)/100 'O si no queremos repetir 3 veces 100
=ALEATORIO.ENTRE(a;b)+ALEATORIO.ENTRE(a;b)/100
Con ALEATORIO, encontramos la limitación opuesta, si deseamos generar números enteros. REDONDEAR permite especificar el número de decimales. Por ejemplo, si queremos obtener ceros o unos:

=REDONDEAR(ALEATORIO();0)'O simplemente
=ALEATORIO.ENTRE(0;1)
Porque si usamos:

=ENTERO(ALEATORIO())
obtendremos siempre ceros pues ENTERO redondea al entero inferior más próximo.

Entradas relacionadas

2013-03-15

Mensaje de error "No se pudo eliminar nada en las tablas especificadas"

En Access la siguiente consulta de eliminación trata de eliminar aquellos registros de la tblClientes cuyo País coincida con aquellos seleccionados en la consulta qryPaises.
























Si pasamos de Vista diseño a Ver, podemos ver los registros que eliminaría si la ejecutáramos.


Sin embargo, al ejecutar la consulta, nos aparecerá el siguiente error:



Si presionamos en ayuda, nos propondrá dos posibles causas: O bien no tenemos permisos para modificar la tabla, o la base de datos se abrió con acceso de sólo lectura. Ninguna de ellas es cierta en este caso.

Para solucionarlo tendremos que abrir la hoja de propiedades (F4 o Alt+ ENTRAR) y cambiar la propiedad de Registros únicos al valor .

2013-03-08

Contar elementos únicos en una lista (2/2)

Cuando el rango contenga alguna celda en blanco:












La fórmula utilizada en la entrada anterior nos daría un error, pues crearía una fracción 1/0 que genera el error #¡DIV/0! Para evitarlo utilizamos:

1. La sugerida por Microsoft válida para Excel 2003 y Excel 2007:
{=SUMA(SI(LARGO(B3:E7);1/CONTAR.SI(B3:E7;B3:E7)))}
2. O la más sencilla y directa, válida desde Excel 2007 en adelante:
{=SUMA(SI.ERROR(1/CONTAR.SI(B3:E7;B3:E7);0))}

La primera fórmula crea una matriz de verdaderos (número de caracteres de la cadena de texto de cada celda, 13 en este caso en todas) y falsos (ceros). Cuando es falso no calcula el 1/CONTAR.SI evitando generar la fracción 1/0. En la segunda fórmula, cuando 1/CONTAR.SI genera un error, lo sustituye por un cero, y continua con el cálculo.











2013-03-01

Contar elementos únicos en una lista (1/2)

Un problema bien documentado, incluido en la ayuda de microsoft y diversos blogs, es el de contar el número de elementos únicos en una lista o rango.












En este caso, 12 valores únicos :
{=SUMA(1/CONTAR.SI(B3:E7;B3:E7))}
Con menos éxito explican el funcionamiento de la fórmula matricial (Ctrl+Mayús+Entrar). Genera tantas fracciones como celdas tiene el rango y suma su valor. Cada fracción es igual a 1/nº repeticiones. Si es único 1/1, si está repetido cuatro veces habrá cuatro veces 1/4 . Un valor único sumará uno, y otro repetido n veces también sumará 1: n * (1/n). Así, al sumar todas las fracciones tendremos el total de valores únicos: 12 en este caso.












Entradas relacionadas: Contar elementos únicos en una lista (2/2)
Nube de datos