La sencilla macro que desarrollaremos aquí es para limpiar esos espacios y colocarles un cero.
Supongamos como haríamos nosotros el trabajo y luego encarguémoslo al robot.
Lo que haríamos sería ir desde la primer columna que carece de ceros una por una de las casillas hacia abajo llenando las vacias con cero. O sea, esto
Do While AComparar <> "FIN"
ActiveCell.Offset(1, 0).Range("A1").Select
AComparar = ActiveCell.Value
If AComparar = "" Then
ActiveCell.Value = 0
End If
Loop
Al final de la columna podemos acotarla con un "FIN", así:
De esta forma cuando el cursor llegue a esa celda le podremos decir que detenga o cambie el proceso.
Si corremos el código anterior veremos que el cursor se detiene al llegar a "FIN". Pero falta decirle que suba. Esto es así:
Selection.End(xlUp).Select
ActiveCell.Offset(0, 1).Range("A1").Select
El cursor sube todo hacia arriba por celdas no vacias, pero como ya las rellenamos todas llegará al tope, y luego se hace una celda a la derecha.
Ahora, solo falta que al llegar de nuevo arriba, repita la operación, lo cual se logra insertando un FOR NEXT con el número de columnas que queremos procesar, por ejemplo 5. Pero hay que decirle al robot que hemos cambiado el valor de la celda activa. El programa queda así:
Sub SustituyeNadaPorCero()
'
' SustituyeNadaPorCero Macro
'
For N = 1 To 5
'
Do While AComparar <> "FIN"
ActiveCell.Offset(1, 0).Range("A1").Select
AComparar = ActiveCell.Value
If AComparar = "" Then
ActiveCell.Value = 0
End If
Loop
AComparar = "Algo"
Selection.End(xlUp).Select
ActiveCell.Offset(0, 1).Range("A1").Select
Next
End Sub
Y el resultado, el siguiente:
Ya no contiene vacíos.