Eliminar celdas excel si cumplen dos condiciones

Buenas Tardes.

De nuevo pidiendo un poco de ayuda.

Bueno tengo una hoja en la cual tengo la lista de productos con el stock y las fechas de entra de productos, esta la utilizo para actualizar la WEB.

en esta hoja en la columna "P" tengo el stock y en la columna "Q" tengo las fechas de entrada de los productos.

Lo que estoy intentando hacer es que me elimine las filas en las cuales los productos estén a 0 y que no tenga fecha de entrada o este vacía ya que en la columna "Q" solo tienen valores las que tienen fecha de entrada.

espero haberme explicado bien.

Gracias.

1 respuesta

Respuesta
1

Prueba a usar este código:

Sub borrarLineasSinStock()
Dim i As Long
Dim sh As Worksheet
Set sh = ThisWorkbook.ActiveSheet
For i = sh.Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
' Comprobamos la columna 16 (P) y 17 (Q)
If (sh.Cells(i, 16) = 0 Or sh.Cells(i, 16) = "") And sh.Cells(i, 17) = "" Then
' Borramos la línea
sh.Rows(i).Delete
End If
Next i
Set sh = Nothing
End Sub

Buenas tardes.

Gracias por tu ayuda, funciono perfectamente.

Abusando un poco de ti, habría alguna manera de poder saber en que linea esta ya que son alrededor de 65.000 productos y la primera vez que hice la prueba lo tuve que parar ya que no sabia lo que estaba haciendo.

Un saludo y muchas gracias por el trabajo que realizas y por dedicar tu tiempo en poder ayudarnos.

Podrías ponerle que cada 100 líneas se sitúe en la línea actual para ver cómo se mueve.

La forma es fácil, detrás de la instrucción "for i = sh..." escribe esta línea:

if i mod 100 = 0 then sh.cells(i,1).select:doevents

Así verás cómo se va moviendo la pantalla.

Otra forma más bonitas, pero un poco más complicadas, sería crear un formulario con una barra de progreso y que presentase el porcentaje, pero eso lleva bastante más programación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas