Una familia de software de hoja de cálculo de Microsoft con herramientas para analizar, trazar y comunicar datos.
Muy interesante tu exposición, Emilio... Me quedo con algunas de tus ideas.
Skar, tu pregunta original era "seleccionar" las celdas que cumplan con una condición. ¿Por qué seleccionar? Posiblemente para ejecutar después una acción: resaltar, borrar, contar, etc...
Cambiando un poco la tónica de la pregunta, propongo que la acción se ejecute directamente en el código. Seleccionar, como comentamos en las respuestas propuestas, no es una alternativa muy potente, pues podría dejar celdas sin incluir en la selección. Lo mejor, entonces, sería que en el ciclo For...Each, dentro del If, se incluyeran estas acciones.
Si esto no es válido (como suele suceder), podrías pensar en cargar las direcciones en un arreglo. Si creas el arreglo como una variable pública tipo Variant, éste mantendrá su valor durante varias "corridas" del código. Ello te permitirá que una vez detectadas las celdas, puedas ejecutar otro procedimiento que te permita seleccionarlas por segmentos (primeras 50 celdas, segundas 50 celdas, etc.).
Considera el siguiente ejemplo. Lo orienté a esta última solución:
Public xR as Variant
Sub ResaltarDatos()
Dim xCelda As Range, xRango As String
For Each xCelda In Selection.Cells
If xCelda.Value = 2 Then
xRango = xRango & xCelda.Address(False, False) & ","
End If
Next xCelda
xRango = Left(xRango, Len(xRango) - 1)
xR = Split(xRango, ",") '<--{ Aquí cargas la selección a un arreglo público
End Sub
Luego, podrías correr un procedimiento como el siguiente para resaltar tus datos:
Sub ResaltarDatos()
For J = LBound(xR) To UBound(xR)
Range(xR(J)).Interior.Color = 13434879
Next J
End Sub
... o idearte un método para seleccionar de 50 en 50 los datos cargados al arreglo xR...