16 junio, 2021

GENERAR CADENAS DE CARACTERES ALFANUMÉRICOS ALEATORIOS CON POWER QUERY

Hola a todos!.

Hoy me apetece de nuevo escribir algo sobre Power Query, es una herramienta con la que trabajo habitualmente pero sin embargo casi no he publicado nada en Excel Signum. Espero ir poco a poco corrigiendo esto y sacar más contenidos.

Para el tema de hoy vamos a trabajar sobre la creación de cadenas alfanuméricas aleatorias con Power Query. Y para este ejercicio también voy a utilizar una función (no voy a repetir los pasos para crear una función, para eso podéis visitar este post).

Pues bien, vamos con el contenido, la idea es crear una función que sea capaz de crear una cadena alfanumérica de longitud definida según los números de cada una de las celdas de la columna A:

Para hacer esto lo único que tendréis hacer es introducir esta función en el editor avanzado de PQ:

(MiSeleccion as number) =>
let
    sCadena = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","ñ","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","Ñ","O","P","Q","R","S","T","U","V","W","X","Y","Z","0","1","2","3","4","5","6","7","8","9"
},
 Aleatorios = List.Generate(
        () => 1, 
        each _ <= MiSeleccion,
        each _ + 1, 
        each sCadena{Number.RoundDown(
            Number.RandomBetween(0, List.Count(sCadena))
        )}
    ),
       Resultado = List.Accumulate(Aleatorios, "", (a,b) => a & b)   
in
    Resultado

Aquí veis la función en el editor:

Y aplicando la función sobre la columna tendremos este resultado:

La función en un primer momento genera una lista en vertical (columna) con los caracteres aleatorios, para pasarla a un fila lo único que debemos hacer es concatenar el resultado:

Resultado = List.Accumulate(Aleatorios, "", (a,b) => a & b)

El resto de la función crea de manera aleatoria la lista que vamos generando con el largo que le indicamos en cada fila.

Aleatorios = List.Generate(
        () => 1, 
        each _ <= MiSeleccion,
        each _ + 1, 
        each sCadena{Number.RoundDown(
            Number.RandomBetween(0, List.Count(sCadena))
        )}
    ),

Y esto es todo, espero que os sea de utilidad ya no solo para componer cadenas alfanuméricas aleatorias, sino otro tipo de informaciones.

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies