miércoles, 23 de septiembre de 2009

Generar Contraseña Alfanúmerica Aleatoria



"Necesito generar contraseñas alfanuméricas (concretamente dos letras, cuatro números y otras dos letras) de forma aleatoria con excel"

Para dar solución a este problema utilizaremos las funciones CARACTER y ALEATORIO.ENTRE

La función CARACTER devuelve el caracter especificado por un número comprendido entre el 1 y el 255 (código ASCII). Para ver la correspondencia de dichos caracteres puede escribir una lista de números del 1 al 255 a partir de la celda, por ejemplo, N1 y escribir en M1 la fórmula =CARACTER(N1). Si aplica el copiado inteligente (doble clic para copiar hacia abajo en la celda M1) verá dicha correspondencia. Pruebe a ponerse en una celda en blanco y pulse la tecla Alt + el número de caracter que desee que aparezca.

La función ALEATORIO.ENTRE genera un número aleatorio entre los números que se especifiquen en los argumentos. Por ejemplo, ALEATORIO.ENTRE(1;100) devolverá un número entre dichas cifras.

Dentro de la categoría de funciones Matemáticas puede que no le aparezca por defecto la función ALEATORIO.ENTRE Para activarla, debe ir a Herramientas/Complementos y seleccionar la opción Herramientas para análisis. Una vez activada le aparecerá dicha función.

Antes de realizar nuestras fórmulas nos ponemos en E5 y escribimos el número 48 y en F5 el 57. Esto es debido a que entre estos dos números se encuentran los caracteres correspondientes a los números del 0 al 9. En E6 escribimos el 65 y en F6 el 90. Esto es debido a que entre estos números se encuentran las letras de la A a la Z.

1. Nos situamos en la celda E2 y escribimos la siguiente fórmula:

=CARACTER(ALEATORIO.ENTRE($E$6;$F$6))

2. Copiamos esta fórmula en D2, K2 y L2.
3. Nos situamos en G2 y escribimos la fórmula:

=CARACTER(ALEATORIO.ENTRE($E$5;$F$5))

4. Copiamos esta fórmula a la derecha hasta J2

De esta forma ya dispondremos de la solución buscada. Si desea generar una nueva contraseña aleatoria sólo tendrá que pulsar la tecla F9.

Puede CONCATENAR el resultado y escribirlo en la celda B2:

=E2&F2&G2&H2&I2&J2&K2&L2


También puede resolverlo con una única fórmula, por ejemplo en B4, como la que sigue:
=CARACTER(ALEATORIO.ENTRE($E$6;$F$6))&
CARACTER(ALEATORIO.ENTRE($E$6;$F$6))&
CARACTER(ALEATORIO.ENTRE($E$5;$F$5))&
CARACTER(ALEATORIO.ENTRE($E$5;$F$5))&
CARACTER(ALEATORIO.ENTRE($E$5;$F$5))&
CARACTER(ALEATORIO.ENTRE($E$5;$F$5))&
CARACTER(ALEATORIO.ENTRE($E$6;$F$6))&
CARACTER(ALEATORIO.ENTRE($E$6;$F$6))

25 comentarios:

  1. Excelente!!! Muchas gracias desde Colombia.... Luis.

    ResponderEliminar
  2. Expectacular!!!!!!!!!!!

    ResponderEliminar
  3. Justo lo que necesitaba, fantastico, muchas gracias por compartirlo.

    ResponderEliminar
  4. Tan facil que es picarle a las formulas, pero muchas gracias, me ayudo. Felicidades.

    ResponderEliminar
  5. No puedo cerrar el programa y vovlerlo a abrir porque me genera una nueva contraseña!

    ResponderEliminar
  6. Se genera una nueva contraseña porque cada vez que se calcula la hoja aparecen nuevos números aleatorios. Si queremos convertir inmediatamente un aleatorio en un dato, tras escribir, por ejemplo,=ALEATORIO.ENTRE(1;100) pulsamos la tecla F9 (antes de pulsar Enter) y así nos proporciona un número aleatorio entre las cifras indicadas pero ya convertido en dato.

    ResponderEliminar
  7. me gustaría exponer un escenario que juega con la aletoriedad: en la primera columna, el nombre de varios objetos; en la segunda, el número de veces que se deberían repetir... ¿cómo podría hacerse para que agrupe de forma aleatoria los objetos en la columna 3 y sucesivas de tal modo que en cada columna haya 4 (por poner un número) objetos y que al final la filas sumen el número de repeticiones marcado? Muchas gracias

    ResponderEliminar
    Respuestas
    1. Me temo que no entiendo exactamente lo que quieres hacer. Por favor mándame un mail con un pequeño ejemplo. Gracias

      Eliminar
  8. Hola, como hago para agregarle caracteres especiales a la contraseña? Gracias!!

    ResponderEliminar
    Respuestas
    1. Hola Paula: ¿me podrías especificar que caracteres quieres añadir?

      Eliminar
  9. Martha Portillo21 agosto, 2012 21:34

    Hola, y para generarlo de 10 digitos?

    ResponderEliminar
    Respuestas
    1. Si queremos generar 10 dígitos aleatorios podemos utilizar directamente la función ALEATORIO.ENTRE. Podemos escribir en A1 el primer valor y en A2 el último valor entre los que queremos que estén comprendidos los dígitos. Si por ejemplo queremos que sean entre 20 y 29 en A1 escribiremos el valor 20 y en A2 el valor 29. Finalmente utilizaremos la fórmula:
      =ALEATORIO.ENTRE($A$1;$A$2)
      y la copiamos en 10 celdas para generar los 10 dígitos aleatorios.

      Eliminar
  10. Si quiero por ejemplo un codigo de 12 caracteres aleatorios de solo letras con numeros es decir (CARACTERES DEL 48 AL 57 Y DEL 65 AL 90, OMITIENDO LOS CARACTERES DEL 58 AL 64) COMO DEBERIA SER, ME DA ERROR.

    ResponderEliminar
  11. En una hoja en blanco escribimos en el rango D1:D12 una lista del 1 al 12.

    En E1 escribimos la siguiente fórmula: =CARACTER(TRUNCAR(ALEATORIO()*(57-48)+48;0)) lo que generará números sin decimales entre el 48 y el 57. Copiamos esta fórmula hasta E6.

    En E7 escribimos la fórmula:
    =CARACTER(TRUNCAR(ALEATORIO()*(90-65)+65;0)) lo que generará números enteros entre el 65 y 90 que, al aplicarles la función CARACTER se convertirán en letras. Copiamos esta fórmula hasta la celda E12.

    En B1 escribimos la fórmula: =BUSCARV(ALEATORIO.ENTRE(1;12);$D$1:$E$12;2) y la copiamos hasta la celda B12 (para que salgan 12 códigos)

    De tal manera que excel generará un número aleatorio entre 1 y 12 que lo buscará en el rango D1:D12 y nos devolverá el valor aleatorio generado en la columna E1:E12.

    ResponderEliminar
    Respuestas
    1. Ok Me faltaba la instruccion truncar. Gracias, eres un mákina.

      Eliminar
    2. De alguna forma, al introducir la fórmula =CARACTER(TRUNCAR(ALEATORIO()*(57-48)+48;0)) da como resultado los números del 0-8 ya que el +48 incluye al 48 pero no hay un +57 que incluya el caracter 57 por lo que la fórmula podría escribirse de la siguiente forma:

      =CARACTER(TRUNCAR(ALEATORIO()*(58-48)+48;0))

      Eliminar
  12. Buenas; lo primero darte las gracias por atendernos.
    Tengo ya en la columna B un listado de codigos segun tus instrucciones pero me interesa mantener siempre estos mismos para poder usarlos, cosa que no consigo ya que al cerrar y volver a abrir el excel veo que se han modificado.
    como consigo mantener siempre los mismos?

    ResponderEliminar
    Respuestas
    1. Al cerrar y volver a abrir Excel recalcula toda la hoja y por eso vuelve a generar una nueva contraseña. Si quieres conservar una en concreto tendrás que copiarla y pegarla como valor.

      Eliminar
  13. Gracias por el ejemplo, yo le agregué las letras minusculas, con el codigo: =CARACTER(ALEATORIO.ENTRE($E$7,$F$7)) y con los valores 97 y 122. en E7 y F7 respectivamente.

    ResponderEliminar
  14. me gustaria saber como generar letras aleatorias digas de a-z

    que formula puedo utilizar

    también me gustaría preguntarle como puedo descifrar la secuencia de un código ejemplo una de estos dos 2l3tfkp9 o ehri3lfj me gustaría saber que código o secuencia seguiría para estos como puedo hacer

    ResponderEliminar
    Respuestas
    1. Si quieres de la a al z en minúsculas:=CARACTER(ALEATORIO.ENTRE(97;122))
      De la A a la Z en mayúsculas =CARACTER(ALEATORIO.ENTRE(65;90))
      La segunda parte de la pregunta no la entiendo. Un saludo

      Eliminar
  15. Como puedo hacerla alfanumérica con mayúsculas y minúsculas, gracias por tu apoyo

    ResponderEliminar
    Respuestas
    1. De igual manera pero utilizando el rango de números del 97 al 122, que son los que se corresponden con el abecedario en minúsculas.

      Eliminar
  16. Buenas noches, necesito buscar una fórmula, que me calcule cantidad aleatoria de una cantidad dada, en múltiplos de 25 y sin que exceda de 500, y que el total de los números aleatorios sea igual a la cantidad dada. No se si seráposible

    ResponderEliminar