.
Buenas, Jhon
Básicamente, no cambiaría porque lo que hace el "sorteo" es la fórmula:
En C4, o donde quieres que esté la fórmula coloca la siguiente:
=INDICE($F$1:$U$40;ALEATORIO.ENTRE(1;FILAS($F$1:$U$40));ALEATORIO.ENTRE(1;COLUMNAS($F$1:$U$40)))
La macro quedaría casi igual, excepto que deberías cambiar la columna donde acumular los resultados de la rutina, debido a que veo que F está ocupada por el rango de números.
(Que conste en acta que en tu pregunta original dijiste que tomaba los datos de una sóla columna)
Suponiendo que ahora los acumule en la columna A, la rutina sería esta:
Sub Loteria()
'---- Variables modificables:
'=== JHON, modifica estos datos de acuerdo a tu proyecto:
Celdato = "D4" 'donde genera el número
col = "A" 'Columna donde acumula los datos. Al principio tendrá sólo el título
'---- fin Variables
'
'---- inicio de rutina:
'
UltFila = Range(col & Rows.Count).End(xlUp).Row
RangoBusq = Range(col & "1", Range(col & UltFila)).Address
Genera:
ActiveSheet.Calculate
Buscar = Range(Celdato).Value
On Error Resume Next
Encontrado = ActiveSheet.Range(RangoBusq).Find(What:=Buscar, after:=[A1], LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Address
If Len(Encontrado) > 0 Then
GoTo Genera
Else
MsgBox Buscar, , "NUMERO:"
Range(col & UltFila + 1).Value = Buscar
End If
Err.Clear
On Error GoTo 0
End Sub
Habrás notado que la rutina muestra un cartel con el número sorteado.
Si es para exhibirlo, podrías poner un zoom grande sobre él o sobre la celda donde queda el resultado en este caso D4:
Espero que ahora sí se lo que querías. Pero si no, vuelve a consultarme.
Saludos
Fernando
.