Filtrar con macros

Hola, buenas tardes, tengo un problema con una macro donde requiero filtrar unos datos de una línea y la cual tiene una serie de valores, lo que quiero es que me filtre cierta línea con valores de un punto inicial a un punto final, pero no se como colocar esos valores, y también, si se puede hacer que me aparezca una sola ventana para capturar los datos, ojala pudieras ayudarme, el ejemplo es:
Dim LINEA As Integer
    Dim PRIMERPUNTO As Integer
    Dim SEGUNDOPUNTO As Integer
    Linea = inputbox("introduzca el numero de linea", "búsqueda de linea")
    primerpunto = inputbox("introduzca el primer punto", "búsqueda de linea")
    segundopunto = inputbox("introduzca el segundo punto", "búsqueda de linea")
    ActiveSheet.Range("$A$6:$AC$43120").AutoFilter Field:=2, Criteria1:=LINEA _
        , Operator:=xlAnd
    ActiveSheet.Range("$A$6:$AC$43120").AutoFilter Field:=3, Criteria1:= _
        ">=PRIMERPUNTO", Operator:=xlAnd, Criteria2:= <=SEGUNDOPUNTO
Respuesta
1
Has probado la opción de 'autofiltro' de excel. Es potente y creo que te resultará más cómodo.
Si, pero es demasiado tardado y no puedo aplicar los criterios de punto a punto. El problema principal de esta macro es que al nombrar los valores no me los acepta, digamos:
ActiveSheet.Range("$A$6:$AC$43120").AutoFilter Field:=3, Criteria1:= _
        ">=PRIMERPUNTO" ----como hacer para que este valor me lo tome en cuenta, me dice que es error de sintaxis o se esperaba una variable----, Operator:=xlAnd, Criteria2:= <=SEGUNDOPUNTO   ----lo aplico con comillas y sin ellas y no me acepta el valor----
Nota: el numero de lineas son 100 y cada linea tiene 100 puntos
un ejemplo de mis datos son: la idea es filtrar la linea 5137 del punto 1103 al 1106
linea punto
5129 1102
5129 1103
5129 1104
5129 1105
5129 1106
5129 1107
5129 1108
5137 1102
5137 1103
5137 1104
5137 1105
5137 1106
5137 1107
5137 1108
5137 1109
Básicamente este es mi dolor de cabeza..
Espero y me puedas orientar
Prueba ha hacer una conversión a numérico Haz una conversión Primerpunto =Val(inputbox...)
De todas formas si te fijas estás usando el autofiltro en la macro. Por lo que los problemas de velocidad los vas a tener iguar.
Si usas el auto filtro 'Custom' te permite hasta dos condiciones por lo que si pones, menor o igual en uno y en otro te saldría lo que quieres.
Otra opción más simple es poner una columna auxiliar con un campo cáculado, de forma que si el valor de la celda está en el rango que quieres te ponga '1' y si no te ponga un '0' Luego filtras por '1' y es más rápido y no te complicas con macros. Además así no tienes que estar tocando el autofiltro constantemente. Si usas la primera fila para teclear los valores te queda todo muy cómodo
Utilice las dos opciones, pero tenia conflictos entre los rangos, opte por una respuesta que me dieron la cual el problema que tenia para que me tomara los valores era:
 yo tenia          ">=PRIMERPUNTO"
la solucion fue ">=" & PRIMERPUNTO
Gracias, por tu ayuda, aprendí dos conceptos nuevos, gracias nuevamente

1 respuesta más de otro experto

Respuesta
1
Te sugiero que utilices los UserForm del Editor de Visual Basic
Ahí podrás agregar cajas de texto para capturar los valores que necesites.
Y Un botón que te permita evaluar.
Si necesitas algo más no dudes en hacérmelo saber.
El problema es que soy nuevo en esto de las macros, y el problema de esta macro es que me dice que hay un error de sintaxis y no me acepta
        ActiveSheet.Range("$A$6:$AC$43120").AutoFilter Field:=2, Criteria1:=LINEA _
        , Operator:=xlAnd
    *****hasta aqui no hay problema***
   ActiveSheet.Range("$A$6:$AC$43120").AutoFilter Field:=3, Criteria1:= _
        ">=PRIMERPUNTO", Operator:=xlAnd, Criteria2:= <=SEGUNDOPUNTO
*****aqui esta el problema, no se como dar o nombrar estas variables y hacer que me las acepte, me dice que hay error de sintaxis o que se esperaba una ejecucion***
Agradeceré me puedas ayudar..
Creo que ya encontré el problema
Dim linea As Integer
Dim primerpunto As Integer
Dim segundopunto As Integer
linea = InputBox("introduzca el numero de linea", "busqueda de linea")
primerpunto = InputBox("introduzca el primer punto", "busqueda de linea")
segundopunto = InputBox("introduzca el segundo punto", "busqueda de linea")
ActiveSheet.Range("$a$6:$ac$43120").AutoFilter field:=2, Criteria1:=linea, Operator:=xlAnd
ActiveSheet.Range("$a$6:$ac$43120").AutoFilter field:=3, Criteria1:=">=" & primerpunto, Operator:=xlAnd, Criteria2:="<=" & segundopunto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas