Macro. Hacer selección múltiple de varias celdas y luego reemplazar los espacios vacíos por ceros

Lo que deseo es una macros que pueda seleccionar múltiple celdas como por ejemplo seleccionar de A1 a C3 y luego otra selección que puede ser de D5 a J5 y luego de tener todo seleccionado busque dentro de esa elección espacios vacíos y los reemplace por 0.

la parte en gris es lo seleccionado.

asi los reemplazo los espacios vacíos por ceros.

1 respuesta

Respuesta
1

¿Y necesitas una macro para esto? Si ya vas a tener seleccionados los rangos, utilizá ésta que la tendrás en algún módulo del Editor (*)

Sub Macro1()
'
' x Elsamatilde
'
'Los rangos pueden ser indicados en la misma macro
 Range("A1:C4,D6,E6:J6").Select
 Range("E6").Activate
 Selection.Replace What:="", Replacement:="0", LookAt:=xlWhole, _
 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
 ReplaceFormat:=False
 Range("A7").Select
End Sub

Si no vas a indicar el rango en la macro, tenés que quitar las 2 1ras instrucciones y ejecutar la macro manteniendo los rangos seleccionados.

(*) Entrá al Editor de macros, insertá un módulo y allí copiá la macro. Para ejecutarla podes utilizar un botón o atajo de teclado (estos temas los tengo explicados en la sección Macros de mi sitio.)

Hola Experta Elsa Gracias por la rápida atención.
Efectivamente esta macro sirve de forma correcta lo que no especifique y fue mi error es que lo que deseaba era que la misma macro utilizando la sentencia For me pueda seleccionar los rango automáticamente ya que como ilustro en las imágenes es una selección que sigue cierto estándar; a que me refiero a que están siempre separadas por una columna y uno o dos filas. Es posible hacerlo de no ser asi me lo comentas finalizo la pregunta con full estrellas ;) Gracias de nuevo

Hola Elsa , se me olvido decirte que encontré que existe una sentencia Union con la cual se puede trabajar mi problema es que no se como trabajarla, de igual forma tu eres la experta asi que tu sabes mejor que yo que puedes y no hacer.

¿Pero son siempre esos 3 rangos o hay más? ¿Y si hay más son hacia la derecha o hacia abajo?

Porque si ya sabés cuáles son los rangos, podes incluirlos en la 1ra instrucción que te dejé:

'Los rangos pueden ser indicados en la misma macro
Range("A1:C4,D6,E6:J6").Select

Según tu ejemplo sería:

Range("B2:D4, B7:D8, B10:D10, F2:H4,... J10:L10").Select

Comentame ...

si se cuales son los rangos el problema es que son mas de 100 rangos los qe debo seleccionar y pues hay es donde se vuelve tedioso y mirando de donde a a donde son los rango. Por eso de mi idea de recorrerlo con un For que digamos seleccionaría el primer rango y luego saltaría al segundo y asi sucesivamente hasta obtener los rango n.

Te dejo otra rutina con el bucle.

Estoy asumiendo que los rangos continúan hacia la derecha y que los títulos se encuentran en fila 1, en la 1er celda de cada rango (B1, F1, J1).

Sub rellenaCuadros()
'x Elsamatilde
'impido el movimiento de la hoja
Application.ScreenUpdating = False
'busco la columna del último rango - CONTROLAR
ultimorgo = Range("IV1").End(xlToLeft).Column
'recorro el bucle desde la col 2 hasta la última en saltos de 4
For i = 2 To ultimorgo Step 4
 Union(Range(Cells(2, i), Cells(4, i + 2)), Range(Cells(6, i), Cells(7, i + 2)), Range(Cells(9, i), Cells(9, i + 2))).Select
 Selection.Replace What:="", Replacement:="0", LookAt:=xlWhole, _
 SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
 ReplaceFormat:=False
Next i
End Sub

Probala. Si no llega bien al último rgo o se pasa, comentame dónde están los títulos (o podés buscar en la sección Macros de mi sitio las instrucciones para encontrar los límites).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas