Necesito generar un código alfanumérico en Excel que no se repita

Tengo que generar una base de datos en los que a cada cliente se le conceden 50 bonos y que el numero de bonos contenga seis caracteres 4 letras y 2 num y no se repita

1 Respuesta

Respuesta

Puedes utilizar esto:

Sub CODIGOOS()
vuelta:
Dim VVV As String
Dim vd As String
Dim vg As String
For B = 1 To 4
    VVV = Int((90 - 65 + 1) * Rnd + 65)
    vs = Chr(VVV)
    vd = vs & vd
Next
VVV = Int((99 - 11 + 1) * Rnd + 11)
codigo = vd & VVV
For B = 1 To 65000
    vg = Worksheets("Hoja2").Range("A" & B).Value
    If IsNull(vg) Or vg = "" Then
        Worksheets("Hoja2").Range("A" & B).Value = codigo
        MsgBox codigo
        GoTo endd
    End If
    If codigo = vg Then
        GoTo vuelta
    End If
Next
endd:
End Sub

Lo que hago es generar el código con el formato de 4 letras y dos números y luego recorre desde A1 hasta A65000 de la hoja "Hoja2". Si encuentra el valor que acaba de generar vuelve al principio, si encuentra un espacio en blanco escribe el código que ha generado y lo muestra en pantalla.

Me dejé una línea:

Sub CODIGOOS()
vuelta:
Dim VVV As String
Dim vd As String
Dim vg As String
For B = 1 To 4
    VVV = Int((90 - 65 + 1) * Rnd + 65)
    vs = Chr(VVV)
    vd = vs & vd
Next
VVV = Int((99 - 11 + 1) * Rnd + 11)
codigo = vd & VVV
If Len(codigo) <> 6 Then GoTo vuelta
For B = 1 To 65000
    vg = Worksheets("Hoja2").Range("A" & B).Value
    If IsNull(vg) Or vg = "" Then
        Worksheets("Hoja2").Range("A" & B).Value = codigo
        MsgBox codigo
        GoTo endd
    End If
    If codigo = vg Then
        GoTo vuelta
    End If
Next
endd:
End Sub

Necesito la fórmula para generar el cod E.1002.00501y que a partir de ahí que al meter los datos me genere el siguiente cod consecutivo

Nada que ver con lo que solicitaste.

Explica por favor cómo quieres "meter" los datos y dónde quieres que te genere el siguiente código.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas