Esta macro lee una columna en este ejemplo producto si encuentra en la columna b alguna columna vacía genera un numero de código aleatorio de 4 cifras que compara con los ya existentes si ya existe lo descarta y genera otro numero, también coloca el ultimo numero que genero en una celda previamente elegida en ese caso d1
y esta es la macro
Sub generar_codigos()
Dim unicos As New Collection
Set datos = Range("a1").CurrentRegion
With datos
filas = .Rows.Count
For i = 1 To filas
codigo = .Cells(i, 2)
If IsEmpty(codigo) = True Then
otro:
codigo = WorksheetFunction.RandBetween(1000, 9999)
On Error Resume Next
unicos.Add codigo, CStr(codigo)
If Err.Number > 0 Then GoTo otro
.Cells(i, 2) = codigo
On Error GoTo 0
End If
Next i
Range("d1") = codigo
End With
set datos=nothing
End Sub