Eliminar todos los números de una columna en excel, menos algunos números (VBA)

Necesito una macro para eliminar todos los números de una columna en excel, menos ciertos números

Ej: eliminar todos los números, menos el 101,102,103,104,105,106,107,108,109

2 Respuestas

Respuesta
2

Usa esta macro, solo cambia la celda a1 por aquella donde comiencen tus datos

Option Base 1
Sub borrar_numeros()
Set datos = Range("a1").CurrentRegion
With datos
    f = .Rows.Count
    ReDim matriz(f, 1)
    x = 1
    For i = 1 To .Rows.Count
        numero = .Cells(i, 1)
        If numero >= 101 And numero <= 109 Then
        matriz(x, 1) = numero
        x = x + 1
        End If
    Next i
    Range(.Address) = matriz
End With
erase matriz
set datos=nothing
End Sub

Gracias por tu respuesta James Bond, pero solo me borra el contenido de la primera celda

Sube una imagen de tus datos para ver porque hace eso, probablemente tengas espacios en blanco

En la columna "J" hay datos de texto y números, quiero que solo queden los números desde el 0101 al 0197

Entonces prueba con esta macro, este es el resultado

Option Base 1
Sub borrar_numeros()
filas = Range("j" & Rows.Count).End(xlUp).Row
Set datos = Range("j6").Resize(filas, 1)
With datos
    ReDim matriz(filas)
    x = 1
    For i = 1 To .Rows.Count
        numero = .Cells(i, 1)
        If numero >= 101 And numero <= 197 Then
        matriz(x) = numero
        x = x + 1
        End If
    Next i
    .Clear
    Range(.Address) = WorksheetFunction.Transpose(matriz)
End With
Erase matriz
Set datos = Nothing
End Sub
Respuesta
1

Qué deseas hacer: ¿Borrar el contenido de la celda o eliminar la celda subiendo las otras de la misma col?

¿Los números a omitir son tal como los estás mostrando? ¿Correlativos o pueden ser aleatorios?

¿Puede haber celdas vacías o con 0 en esa col?

Este macro borra la celda si contiene números distintos a los indicados en el ejemplo.

Sub borraCeldas()
'x Elsamatilde
'borrar de la col B, a partir de fila 2 hasta el fin de datos
For i = 2 To Range("B" & Rows.Count).End(xlUp).Row
    If Range("B" & i) < 101 Or rnge("B" & i) > 109 Then Range("B" & i) = ""
Next i
End Sub

Si esto no es lo que necesitas aclara todos los detalles. Si te sirve no olvides valorar la respuesta para darla por cerrada (opciones: Excelente o buena)

Gracias Elsa,

Lo que necesito es borrar todo el contenido de las celdas de una columna, menos los números comprendidos entre el 101 y el 197, los demás datos que borre

Entonces la macro te servirá. Solo ajusta la letra de la columna (en mi ejemplo B) y la comparación sería:

If Range("B" & i) < 101 Or range("B" & i) > 197 Then Range("B" & i) = ""

Quizás quieras incluir también los extremos, es decir <=  o >=

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas