Hay ocasiones, especialmente en clase de Informática, en las que se necesita generar datos de prueba para poder realizar cálculos sobre ellos (en ocasiones abuso de la función «aleatorio.entre(…)» de LibreOffice Calc 😉 ) El otro día plantee (como «reto») a los alumnos de Bachillerato generar fechas aleatorias y caí en la cuenta que nunca había documentado en el blog cómo hacerlo así que me he decidido a subsanar dicho «despiste» (así, cuando lo busquen, me encontrarán a mi jojojo…) Lo primero que se les ocurrió a los alumnos fue utilizar las funciones:
- aleatorio.entre(…) para generar meses y días al azar
- concatenar(…) para unir los numero generados con las barras de separación de una fecha y el año
Pero, dicha solución, plantea un «grave» problema: ¡controlar que las fechas sean correctas! (¿qué os parecería un 30 de febrero o hacer que abril tenga más de 30 días?) La solución es sencilla pero requiere pensar de un modo radicalmente distinto: las fechas se representan internamente como números así que ¿¡¿ por qué no sumar valores numéricos a una fecha ?!? Como sospecho que no se habrá entendido, os dejo directamente la solución y trataré de aclararla
='15/09/2015'+aleatorio.entre(0;180)
Donde:
- ’15/09/2015′ es la fecha de inicio; puedes usar cualquiera, yo he usado esta por ser el inicio de curso 😉
- aleatorio.entre(0;180) generará fechas a 3 meses «vista»; el 0 es para que se incluya el ’15/09/2015′ entre los posibles valores generados.
Conclusión
Forma sencilla de generar fechas aleatorias en cualquier hoja de cálculo (las funciones utilizadas son para LibreOffice Calc en castellano, pero «traduciéndolas» a cualquier otra hoja de cálculo deben funcionar igualmente)
¿Y tú…?
- ¿Conocías esta forma de generar fechas aleatorias?
- ¿Has resuelto el problema de otra forma?
- ¿Qué te ha parecido la solución planteada?
- …
Otra solución pasa por olvidarnos del concepto fecha y tener en cuenta que las fechas no dejan de ser números para Excel.
Con la fórmula =FECHANUMERO(«09/03/2015») podemos ver que el día de hoy corresponde al número entero 42072. Si quisiéramos generar fechas aleatorias de aquí a un año, podemos utilizar:
=ALEATORIO.ENTRE(42072;42437)
Quedaría dar el formato correcto a las celdas para ver que efectivamente esos números pueden ser interpretados como fechas.
La solución es muy parecida a la tuya pero evita un paso de cálculo (la suma).
Me gustaMe gusta
En realidad no necesitarías usar ni la función (bastaría escribir la fecha y cambiar el formato a número)
Al principio lo usaba pero me cansé de estar averiguando los números asociados a las fechas de inicio y fin del intervalo 😉
Puestos a enredar también podríamos anidar funciones en plan aleatorio.entre(fechanumero(«09/03/2015»);fechanumero(«08/03/2016»)) pero creo que con la idea que hemos planteado (las fechas son números) se capta suficientemente el concepto y cada uno puede empezar a componer sus propias «aberraciones» ¿no te parece? XD
Me gustaMe gusta
Me has recordado las fechas «julianas», que supongo que es una posible solución que buscas (http://es.wikipedia.org/wiki/Fecha_juliana).
Bueno bastaría con un número pseudoaleatorio y luego ese número que es una fecha en formato juliano y luego convertir a gregoriano y chimpum, como por ejemplo http://relopezbriega.com.ar/2014/excel/convirtiendo-la-fecha-juliana-de-jde-con-excel/
Me gustaMe gusta
Perteneciendo a la gens Julia, no podía ser de otra forma 😉
Es otra alternativa (gracias por plantearla) pero hay mucha conversión de por medio ¿no te parece? Yo manejo realmente mal el calendario «juliano» (si acaso, cortar a «juliana» pero no creo que tenga mucho que ver jojojo)
Un abrazo compi y gracias por compartir el nuevo enfoque para «abrir mentes»
Me gustaMe gusta
Parecido. =42004+(RAND()*365)
42004 es el 31/12/14 y el uso de la función rand es el habitual en todos los lenguajes de programación, la generación de un aleatorio entre 0 y 1 a multiplicar por el número de objetos a obtener.
Me gustaMe gusta
La «traducción» a LibreOffice Calc (en castellano) sería la función «aleatorio(…)»
Realmente, tendríamos una implementación de la solución propuesta por Carlos
Gracias por «materializarla» Samuel 😉
Me gustaMe gusta
Odio que Excel, Calc y similares se empeñen en traducir los nombres de funciones. Tengo que trabajar con versiones de Excel en distintos idiomas, y es un INFIERNO estar pensando cómo se traducen RAND, MEAN o similares!!!
¿Existe alguna opción oculta en algún sitio para que todas las hojas de cálculo en diferentes idiomas pasen a usar las funciones en inglés????
Me gustaMe gusta
La verdad es que sería un «pelotazo» dicha posibilidad; sufro en «silencio» el mismo problema que mencionas y sí que sería interesante encontrar dicha opción ¿alguno la ha encontrado ya? 😦
Me gustaMe gusta