Crear un filtro con macro

Quiero crear una macro que me permita hacer un filtro aplicando varias condiciones como en el ejemplo, quiero buscar por numero de vuelo y destino, o la combinación de varios. En donde dice bagtag mi sistema genera un numero largo, pero quiero que la búsqueda se base en los 4 últimos dígitos de ese numero largo

Gracias

Respuesta
1

Se puede buscar por los últimos 4 dígitos sin problema, el tema es que la macro que me enviaste no sirve =/ nisiqueira funciona .

¿Mañana cuándo llegue a la oficina te creo una macro para que busque en el registro por el Tag y te devuelva las otras 5 filas te parece?

Si tienes el video donde viste ese buscador mándame el link al correo así yo lo adapto a tus datos

Ya le encontre solucion jeje

Sub Filtrado()
'
If Range("B8") <> "" Then
Range("B8") = "*" & Range("B8")
End If
Range("alldata").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"B7:G8"), CopyToRange:=Range("B13:G13"), Unique:=False
Range("B8:G8").Select
Range("G8"). Activate
Selection. ClearContents
End Sub

Avisame si te funciona bien, si tu rango donde buscas el codigo no es B8 cambialo por el tuyo , busca el tag unicamente por los numeros que terminan en los que ingresas  

Ejemplo si tu escribes "4346" te va a mostrar unicamente los tags que terminan en ese numero

¡Gracias! Seba,,, No me funciono.... Seguimos buscando

Gracias miles

Buenos días Yosvanys Guerra Valverde

Esta macro te busca el primer tag que encuentre con la terminación que ingreses

Sub Buscar_datos()
'Declaro variables
Dim xcel As Object
Dim Rcel As String
Set H1 = Sheets("Bdatos")
Set h2 = Sheets("Busqueda")
' Exploramos el rango
For Each xcel In Range("alldata")
Rcel = Right(xcel, 4)
If Rcel = h2.Range("B8").Value Then
xcel.Copy: h2.Range("B8").PasteSpecial xlValues
GoTo Sigue_Filtro
End If
Next xcel
Sigue_Filtro:
' Inicia el filtado
Range("alldata").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
    "busqueda!Criteria"), CopyToRange:=Range("busqueda!Extract"), Unique:=False
Range("B8:G8").Select
Selection.ClearContents
Range("B8").Select
End Sub

Le agregue un For each para que recorra el rango en busca de el valor que tu ingresas, si lo encuentra,  lo remplaza en la celda B8 y luego hace el filtrado

Costo pero salio ja ja recuerda que son solo 4 dígitos

No olvides valorar la respuesta si te fue útil

Gracias Seba, dia super ocupado. He probado la macro ty no me funciona. he tratado de sustituir los rangos, por lo que estan definidos. La informacion se busca en la hoja base de datos que la he nombrado como Alldata y se busca en la Hoja Search.... Te agradezco tu ayuda inifinitamente..

Te envío la macro nuevamente con 2 fotos aclarando lo que tienes que tener en cuenta, el for each que cree es de D4:D100 que seria donde estan los codigos pero eso modificalo a tu conveniencia al igual que todos los rangos dentro de la macro

Antes de crear este filtro elimina el que tengas creado para evitar errores de rangos

Sub FILTRO()
'Declaro variables
Dim xcel As Object
Dim Rcel As String
Set h1 = Sheets("Alldata")
Set H2 = Sheets("Search")
' Exploramos el rango
For Each xcel In h1.Range("D4:D100")
    Rcel = Right(xcel, 4)
        If Rcel = H2.Range("C6").Value Then
            xcel.Copy: H2.Range("C6").PasteSpecial xlValues
        GoTo Sigue_Filtro
    End If
Next xcel
Sigue_Filtro:
    Range("DATOS").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
        "C5:H6"), CopyToRange:=Range("C10:H10"), Unique:=False
    Range("C6:H6").ClearContents
    Range("C6").Select
End Sub

Si la informacion te fue de utilidad no olvides valora la respuesta( Buena o exelente)

¡Gracias! Seba.. Ahora si trabaja perfecto. Gracias por toda tu ayuda. Espero seguir aprendiendo contigo. 

Me alegro que te haya funcionado Yosvanys

Claro cualquier cosa que necesites hacer y yo tenga manera de ayudarte cuenta conmigo

¡Hola Seba, vuelvo a molestarte, pero te tomo la palabra de ayudarme cuando lo necesite. Esta macro me funciona perfecto, es para contar los registros de la base de datos y hacer un resumen en otra hoja que he llamado discrepance... pero solamente me hace el conteo por fecha y nunmero de maletas chequeadas, me gustaría me apareciera el destino y si existe alguna opción para cuando el agente coloque el numero de maletas chequeadas en el sistema, me haga una comparación con el total de escaneadas... Espero entiendas mi locura

Ahhh y otra cosa los resultados me los pone en la tercera fila y yo quisiera que comenzara a partir de A2. Gracias Seba

Sub contar_maletas_diarias()
Dim funcion As WorksheetFunction
Set h2 = Worksheets("discrepance")
Set datos = Range("alldata").CurrentRegion
Set destino = h2.Range("a2").CurrentRegion
Set funcion = WorksheetFunction
With datos
f = .Rows.Count: c = .Columns.Count
Set datos = .Rows(2).Resize(f - 1, c)
With destino
fd = .Rows.Count: cd = .Columns.Count
If fd > 1 Then
Set destino = .Rows(fd + 1).Resize(f - 1, 3)
Else
Set destino = .Resize(f - 1, 3)
End If
Union(datos.Columns(1), datos.Columns(3)).Copy: destino.PasteSpecial
.RemoveDuplicates Columns:=Array(1, 2)
blancos = funcion.CountBlank(destino.Columns(1))
If blancos > 0 Then Set destino = .Resize(.Rows.Count - blancos)
For i = 1 To destino.Rows.Count
fecha = .Cells(i, 1)
vuelo = .Cells(i, 2)
cuenta = funcion.CountIfs(datos.Columns(1), fecha, datos.Columns(3), vuelo)
.Cells(i, 3) = cuenta
Next i
End With
Set datos = Nothing: Set destino = Nothing: Set h2 = Nothing: Set funcion = Nothing
End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas