Alfanumérico aleatorio ordenado y no consecutivo en excel

Quisiera que me pudierais ayudar en crear un código alfanumérico de 10 caracteres en los que los dos primeros son caracteres fijos. Los códigos han de ser aleatorios ordenados y no consecutivos, utilizando solo números y letras mayúsculas. El número de combinaciones disponibles es de 35 elevado a 8.

2 Respuestas

Respuesta

Ho la Marta y bienvenida a TodoExpertos.

Visita:

Macros y Excel


Tengo algunas dudas:

- A qué te refieres con "Ordenados" puedes poner un ejemplo.

Te refieres a algo como esto:

125GIPQU
57ALORSY

- ¿Los caracteres que necesitas son de la A a la Z y del 1 al 9. El cero no está incluido?

- ¿En dónde quieres poner el resultado?


Prueba lo siguiente, el resultado te lo presenta en pantalla:

Sub alfanumerico_aleatorio()
  Dim a(1 To 35)
  Dim i As Long, j As Long, nMax As Long, x As Long, y As String
  Dim coll As Object
  Set coll = CreateObject("System.Collections.ArrayList")
  For i = 49 To 90  'del 1 al 9 y de la A a la Z
    If i < 58 Or i > 64 Then
      j = j + 1
      a(j) = Chr ( i )
    End If
  Next
  nMax = UBound(a)
  Randomize
  For i = 1 To 8
    x = Int(Rnd * nMax + i)
    y = a(i)
    a(i) = a(x)
    a(x) = y
    nMax = nMax - 1
    coll.Add CStr(a(i))
  Next
  coll.Sort
  MsgBox "##" & Join(coll.toarray, "")
End Sub

Cambia en la macro "##" por los dos caracteres fijos.

Si quieres el resultado en una celda, cambia esta línea:

MsgBox "##" & Join(coll.toarray, "")

Por esta línea:

Range("K8") = "##" & Join(coll.toarray, "")

Y cambia "K8" por la celda donde quieres el resultado.


Recomendaciones:

Función sumaproducto - YouTube

Sal u dos

Dante Amor

En lo que me preguntas en relación al "ordenados" algo como estos te indico a continuación una muestra de algunos códigos generados. En referencia en donde quiero generarlos, por ejemplo en la columna A y en función de cuantos genere hasta la línea N

¿Cómo qué "en función de cuantos genere"?

Revisa bien tu petición y vuelve a escribirla con lujo de detalle.

Explica qué quieres exactamente y en dónde lo quieres.

Tu imagen está incompleta. No se ven las filas ni la columna.

La macro que te puse genera un código, porque eso pediste:

"crear un código alfanumérico de 10 caracteres"

Entonces revisa bien qué quieres y regresas aquí y lo explicas con detalle.

No hay prisa, así que con calma explica qué quieres.

A ver si soy capaz de explicarme.

Necesito generar una relación de N códigos, que sus dos primeros dígitos sean fijos para poder identificar a que grupo pertenecen, por ejemplo empezando por G1.

Los códigos son Aleatorios, ordenados y no consecutivos, utilizando solo números y letras mayúsculas. El numero de combinaciones disponibles por cada socio son 35 elevado a 8, con lo que tenemos más de 2 billones de combinaciones, que creo que son más que suficientes .

Un saludo

Ya entendí, quieres un código con 2 caracteres fijos: G1 y los siguientes 8 caracteres son aleatorios, eso ya no tienes que explicarlo. De hecho, si tuviste oportunidad de ejecutar mi macro, verás que te genera un código con 2 caracteres fijos y 8 caracteres aleatorios.


Lo que sigo sin entender, y es porque no lo has explicado, es lo siguiente:

- ¿Quieres 1 o 2 o 10 códigos o 2 billones de códigos?

- Explica con ejemplos. Supongo que tienes en la mente algunos ejemplos. (Tu imagen no me sirve porque está incompleta). Pon ejemplos completos.

- ¿En dónde quieres poner los resultados? En un libro, en una hoja, cómo se llama la hoja, en celdas, ¿en cuáles celdas? ¿Empezando en cuál celda y terminando en cuál celda?

- Este foro es de excel, entonces debes especificar si lo quieres en un libro, cómo se llama el libro, cómo se llama la hoja, en cuáles celdas. Con imágenes completas.

- Si quieres generar 10 códigos en dónde vas a definir que quieres 10 códigos y no 23 millones.

¿Lo quieres con macro? ¿O con fórmula? ¿Ya probaste la fórmula de Rafael Vera?


E spero tus comentarios.

Sal u dos Dante Amor

Recomendaciones:

(1) sumar si con indice. Sumar las ventas dependiendo del nombre y del mes. - YouTube

Respuesta

Te sirve la fórmula

Hola Rafael, muchas gracias por tu aportación, pero en esta fórmula no puedo asegurar que no se den repeticiones y tampoco tengo los dos primeros dígitos fijos

Antes no explica bien tu pregunta y le falto poner las imágenes tus dudas

Function GENERAR_CODIGO() As String
    Dim caracteres As String
    Dim longitud As Integer
    Dim codigo As String
    Dim i As Integer
    caracteres = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    longitud = 8
    codigo = ""
    Randomize
    For i = 1 To longitud
        codigo = codigo & Mid(caracteres, Int((Len(caracteres) * Rnd) + 1), 1)
    Next i
    GENERAR_CODIGO = codigo
End Function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas