Eliminar con condición excel

buenos días expertos...

como ya es mi costumbre quisiera me apoyaran a realizar una macro que tengo en mente pero por ser novato en esto de vba se me es difícil.....

quisiera hacer una macro que por medio de un textbox (en un userform) me busque la información que le escriba (palabras o números) en él, y me elimine todo lo que no sea igual y solo me deje las coincidencias, estoy ablando de un archivo donde contiene aproximadamente 600 registros.

gracias por su ayuda nuevamente y espero haberme explicado bien

saludos...!!!

1 respuesta

Respuesta
1

Ejemplo:

Mediante esta macro situada en un botón de tu formulario, buscará el dato introducido en el textbox1 en la hoja1 y borrará todos los datos que no coincidan.

(Recuerda finalizar y puntuar mi labor)

Private Sub CommandButton1_Click()

If TextBox1.Value = "" Then Exit Sub

If Not IsNumeric(TextBox1) Then

MsgBox "solo se admiten valores numéricos"

Exit Sub

End If

valor = CDbl(TextBox1.Value)

For Each celda In Sheets(1).Range("a1").CurrentRegion

If celda.Value <> valor Then

celda.ClearContents

t = t + 1

End If

Next

MsgBox "se han borrado " & t & " valores distintos"

End Sub

me parece GENIAL...!!!

solo tengo unas dudas:

como le puedo hacer para que también me busque palabras??

y que me deje la información que se encuentra en la fila donde esta el resultado de la búsqueda??

de antemano una disculpa por mis dudas

Mejor dime cual es el rango donde tiene que buscar para construirlo mejor

lo que sucede es lo siguiente:
tengo una base de datos en excel de aproximadamente 600 registros o mas, en la cual me baso para sacar diferentes reportes ejemplo: me pueden pedir el reporte de una clave o de algún articulo (por eso mi interés de que la macro me deje ingresar en el textbox números y letras), que una vez que encuentre todas las coincidencias me deje la información intacta de la fila donde esta ubicada la información del textbox y todo lo que no es igual lo elimine.
de antemano una disculpa y perdona a este pobre novato jejejeje... saludos..!!!
 

y... una pregunta: ¿Para algo así, por qué no usas un filtro? Lo veo muy simple para utilizar macros.

lo que sucede es que de esa base de datos aproximadamente diario saco unos 6 reportes y me quería evitar el uso de filtros

Dime tu mail y te mando un proyecto acabado que te puede servir

[email protected]

espero me puedas ayudar

En principio no hace falta que te envía nada, te lo cuento por aquí. En mi ejemplo tengo una base de datos en la hoja DATOS que ocupa el rango A1:B22, siendo la primera fila el encabezado. Queremos hacer una consulta sobre esta base de datos y que nos muestre solo los datos encontrados en la hoja REPORTE. Este ejemplo lo he construido trabajando sobre la hoja y no sobre un formulario, pero funciona igual:

(Solo queda que lo pruebes, lo estudies y lo adaptes a tu caso)

Sub informe()

ultimareporte = Sheets("reporte").Range("a65000").End(xlUp).Row + 1

Sheets("reporte").Range("a2:b" & ultimareporte).ClearContents

fila = 2

dato = InputBox("que dato buscamos??")

If dato = "" Then Exit Sub

Set busca = Sheets("datos").Range("a1:a10000").Find(dato, LookIn:=xlValues, lookat:=xlWhole)

If Not busca Is Nothing Then

ubica1 = busca.Address

Do

Sheets("reporte").Cells(fila, 1).Value = busca

Sheets("reporte").Cells(fila, 2).Value = busca.Offset(0, 1)

fila = fila + 1

Set busca = Sheets("datos").Range("a1:a10000").FindNext(busca)

Loop While Not busca Is Nothing And busca.Address <> ubica1

End If

End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas