miércoles, 6 de noviembre de 2013

Macro para rellenar espacios vacíos

En muchos programas no es lo mismo un espacio vacío que un cero. Por ejemplo en JMP pueden ocurrir algunos problemas de cálculo si en vez de cero hay vacíos. Abajo se muestra un ejemplo de una encuesta que ha sido capturada con espacios en vez de ceros.


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.


No hay comentarios:

Publicar un comentario