Macro para eliminar celdas con un dato especifico

Tengo una base de datos con el rango Z2:DU1094, en esta base las celdas contienen el numero 0 y el numero 1

Necesito eliminar todas las celdas que contengan el numero 0

1 respuesta

Respuesta
1

:)

Hola! Diego. Será necesario que amplíes tu descripción en dos cuestiones:

a) Esos "0" y "1": ¿Son el resultado de fórmulas o son valores constantes?

b) Imagina el rango Z2:AB3 con la siguiente info:

0 1 0

1 0 1

c) ¿Qué resultado deseas terminar teniendo y en qué celdas deseas que quede expresado?...

Saludos, Mario R.

:)

.

Mario, buenas noches, te contesto tus preguntas:

a) Son resultados de formulas

b) En tu ejemplo, necesito que queden solamente los 1 en esta ubicación

  Z2   AA2  AB2              

   1         1       1

Necesito copiar esos valores (los 1) en la misma ubicación en la hoja 2

Te paso la macro que arme yo, necesito que vos la revises y le agregues la automatización desde la celda Z2 a la DU1094, y la copia de los numeros 1 en la misma ubicación en la hoja 2

Sub  Eliminar Celdas en 0

Dim rng As Range
Dim i As Integer, counter As Integer

'Set the range to evaluate to rng.
Set rng = Range("Z2:Z1094")- -- - - - - - - - >   aca necesito Z2:D1094 

'initialize i to 1
i = 1

'Loop for a count of 1 to the number of rows
'in the range that you want to evaluate.
For counter = 1 To rng.Rows.Count

'If cell i in the range = 0,
'delete the row.
'Else increment i
If rng.Cells(i) = 0 Then
rng.Cells(i).EntireRow.Delete
Else
i = i + 1
End If

Next
End Sub

Esta macro solamente elimina los 0 por columna y desplaza los uno hacia arriba, pero no se como hacer para que lo haga secuencialmente desde la Z2:Z1094 hasta la DU2:DU1094 y a su vez que cada vez que finalize cada columna copie los valores (o sea el 1) no la formula en la hoja 2 en la misma posición

Espero haberte ayudado, espero tu macro modificada,

Muchas Gracias.-

:)

Volviendo al ejemplo reducido que estamos analizando, Diego: ¿Sabes qué es lo que veo?...

- Veo 3 "unos" distribuidos en distintas posiciones, y

- Entiendo que quieres terminar teniendo esos "unos" distribuidos "por fila" a lo largo de las 100 columnas.

¿"Eso" es lo que quieres?...
Saludos, Mario R.

:)

.

:)

Esto es lo que entiendo, entonces:

Sub Macro295()
Dim Q&, Unos&, iRow As Range
With Range("z2:du1094")
  Unos = Application.Sum(.Cells)
  .Value = 0
  For Each iRow In .Rows
    Q = Application.Min(Unos, iRow.Cells.Count)
    If Q = 0 Then Exit For
    iRow.Resize(, Q) = 1
    Unos = Unos - Q
  Next
End With
End Sub

Saludos, Mario R.

:)

.

Mario, pruebo la macro y te digo si hace lo que necesito

Gracias.-

Mario, pruebo la macro y te digo

Gracias

La pruebo y te comento

Gracias

¡Gracias! 

 funciona abrazo

.

Otro.

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas