Saltar al contenido

Crear Filtros Por Medio de Casillas de Verificación?


brayann91

Recommended Posts

publicado

El problema que tengo es el siguiente:

Tengo una hoja de calculo, la cual tiene datos desde la celda A1,

hasta aproximadamente la celda L250, el echo es que tengo que,

filtrar datos, por la columna "K",y columna"L", que tiene unos 10

valores distintos.

(opcion1, opcion2, opcion3....)

bueno mi solución, fue crear un userform, el cual posee varias casillas

de verificación, y al chulear, dichas casillas, y pulsar un botón de búsqueda,

me realiza el filtro. Y hay es donde viene mi problema, el filtro se me aplica,

únicamente a una solo opción, es decir si chuleo la opcion1, y la opcion2

únicamente me aplicara el filtro a una de estas opciones, y lo que necesito,

esque se aplique a todas las opciones que chulee mediante las casillas de

verificación, y en las columnas K , L.

Agradeceria a quien pueda darle solucion a mis problemas

Una de las cosas que intente fue la siguiente:

If opcion1 = True And opcion2 = True Then

ActiveSheet.Range("$A$5:$l$999").AutoFilter , Field:=11, Criteria1:=Array _

("opcion1", "opcion2"), Operator:=xlFilterValues

End If

pero como podrán notar, son 20 casillas de verificación (10 en columna K y

10 en la L), y si realizo el filtro por medio de una condición, me tocaria hacer

infinidad de condiciones, (opcion1 con opcion2, opcion1 con opcion2 y opcion3,

opcion1 con opcion2 opcion3 y opcion4.....)

post-121943-145877006601_thumb.jpg

publicado

la idea es que los usuarios ingresen fácilmente a su información

ademas tengo adicional a esto filtros de fecha y hora, lo cual es

bastante complicado de buscar por medio de auto filtro

publicado

wua muchas gracias, es casi exactamente lo que quería

solo hay un detalle que me gustaría corregir:

en el caso tal de que se desee filtrar únicamente valores por opcion1, opcion2 etc..

[ATTACH]35542.vB[/ATTACH]

debería poder hacerse sin tener en cuenta el motivo, no se si me hice entender,

y viceversa, si se selecciona unicamente el motivo, tambien se deberia filtrar

unicamente el motivo.

de todos modos muchas gracias por todo, no se si me podrias colaborar

con esa unica cosita.

muchas gracias :D

post-121943-145877006612_thumb.jpg

publicado

Selecciona "Seleccionar todo" en la otra opción. (Lo mismo que harías en la hoja)

En el ejemplo de la imagen, sería Selecciona "Seleccionar todo" en motivo.

  • 10 months later...

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      29

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    2    1

  • Crear macros Excel

  • Mensajes

    • Que tal nuevamente,  adjunto una solución alternativa: =MAX(A:.A)-BYROW(F4:.AK20,LAMBDA(r,BUSCAR(2,1/(r=0),F3:.AK3))) Cabe mencionar que esta solución requiere funciones nuevas como RECORTAR.RANGO. CONTADOR FINAL (Solucion).xlsb
    • Buenos días,  espero se encuentren bien de salud compañeros, Favor me podrían ayuda con lo siguientes como se podría hacer cuando tengo una tabla dinámica que  amedida que se aumente las columnas fechas con data un formula que se coloco al final busque o analice siempre la ultima fila y columna de la fecha. Coloco un ejemplo
    • @JSDJSD Excelentes, GRACIAS POR TU SOPORTE , me ayudo demasiado es exactamente lo que quería. 5 ESTRELLAS
    • 'Opción 1 Sub FiltrarSKUPorFecha(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim diccionarioSKU As Object Dim listaEliminar As Object Dim fechaActual As String, fechaSiguiente As String Dim f As Variant With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Crear diccionarios para comparar SKU y almacenar filas a eliminar Set diccionarioSKU = CreateObject("Scripting.Dictionary") Set listaEliminar = CreateObject("Scripting.Dictionary") ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then diccionarioSKU.RemoveAll ' Limpiar el diccionario antes de llenarlo ' Guardar los SKU de la fecha siguiente (solo de la siguiente) For f = fila + 1 To ultimaFila If .Cells(f, 1).Value <> fechaSiguiente Then Exit For diccionarioSKU(.Cells(f, 2).Value) = 1 Next f ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Solo eliminar si el SKU no está en la fecha siguiente If Not diccionarioSKU.exists(.Cells(f, 2).Value) Then listaEliminar(f) = 1 ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar.keys .Rows(f).Delete Next End With MsgBox "Completado correctamente.", vbInformation End Sub 'Opción 2 Sub FiltrarSKUPorFecha1(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim listaEliminar As Collection Dim fechaActual As String, fechaSiguiente As String Dim f As Variant, i As Long Dim SKUExiste As Boolean With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Inicializar la colección para marcar las filas a eliminar Set listaEliminar = New Collection ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Comprobar si el SKU está en la fecha siguiente SKUExiste = False For i = fila + 1 To ultimaFila If .Cells(i, 1).Value <> fechaSiguiente Then Exit For If .Cells(i, 2).Value = .Cells(f, 2).Value Then SKUExiste = True Exit For End If Next i ' Si el SKU no se encuentra en la fecha siguiente, marcar para eliminar If Not SKUExiste Then listaEliminar.Add f ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar .Rows(f).Delete Next f End With MsgBox "Completado correctamente.", vbInformation End Sub   TABLA ELIMINAR.xlsm
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.