Puede descargar el archivo con el código VBA: eratostenes.xlsm
En nuestro ejemplo vamos a obtener los números primos anteriores a 200, que son:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199.
Option Explicit
Sub cribado()
Dim A(200) As Integer
Dim i As Integer, j As Integer
Dim color
Range("B4:K23").Interior.Pattern = xlNone
For i = 2 To 200
A(i) = i
Next i
For i = 2 To 200
If A(i) <> 0 Then
color = RGB(Rnd * 256, Rnd * 256, Rnd * 256)
For j = i + 1 To 200
If j Mod i = 0 Then
Call colorines(A(j), color)
A(j) = 0
End If
Next j
End If
Next i
End Sub
Sub colorines(n, color)
Dim fila As Integer, columna As Integer
For fila = 4 To 23
For columna = 2 To 11
If Cells(fila, columna).Value = n And n <> 0 Then
Cells(fila, columna).Interior.color = color
End If
Next columna
Next fila
End Sub
Se van coloreando los múltiplos de los diferentes primos que nos encontramos. Finalmente, los números que quedan sin colorear son los números primos.