Macro + Filtro + Criterio Variable

Resulta que tengo una macro en excel donde necesito hacer un filtro de una lista de 5 columnas y 1000 filas. La cuestión es que el criterio del filtro de la columna B me lo deja constante en el código de VB. Sale de la siguiente forma: -- Selection. AutoFilter Field:=2, Criteria1:="LC00000501" (este es el problema), Operator:=x1And -- y lo que necesito es que el criterio no sea esa constante sino una variable. La variable es un valor de una celda cambiante, celda que dentro de la macro ha sido copiada (Ctrl+c) y necesito pegarla (Ctrl+v) en el campo del criterio. Como puedo hacer ya que cuando modifico el espacio de Criteria1:="LC00000501" por Criteria1:="Selection.Paste" (que creo es lo adecuado) no me busca en la base lo que necesito sino lo que está escrito? Gracias por su ayuda. AQC
Respuesta

A la comunidad todoexpertos, a ver si ustedes me pueden ayudar, soy nuevo en las macros y adaptando la respuesta que indicó Carabis, conseguí parte del objetivo pero me surgió un nueva duda, en mi caso, en el filtro necesito buscar con 2 condiciones que se debe cumplir una o la otra "igual a" y la otra "contiene". Con lo explicado por Carabis, logro solucionar la primera "igual a" al tratar de aplicarle a la variable (declarada NroDoc), es donde caigo aparatosamente, este es parte del código desarrollado;

.Range("A" & FInc - 1, "I" & UltF).AutoFilter Field:=4, Criteria1:=NroDoc, Operator:=xlOr, Criteria2:="=*720067*"

Como ven donde dice Criteria2:="=*720067*", la grabadora de macros me coloca esto, pero al aplicar la solución propuesta en este foro, lo deje  así Criteria2:=*NroDoc*, pero me arroja Error de Compilación, se esperaba expresión. Ahora requiero de su valiosa colaboración,la verdad ando más perdido que el hijo de Limber.

Perdonen comunidad, pero me fije que en vez de proponer una nueva interrogante, le di a responder como si quisiera aportar algo, me disculpo por el descuido.

Después de seguí buscando conseguí la solución a la interrogante que le plantee, la solución no era tan complicada como me lo imagine, aplique un poco de lógica y y di con ella, es posible que exista otra solución, pero en mi caso esta fue la que me resulto. Les hago el aporte por si a alguien le interesa la respuesta.

Solo debía concatenar la instrucción con la variable Criteria2:="=*" & NroDoc & "*", quedando todo así.

.Range("A" & FInc - 1, "I" & UltF).AutoFilter Field:=4, Criteria1:=NroDoc, Operator:=xlOr, Criteria2:="=*" & NroDoc & "*".

Una vez más me disculpo con la comunidad y paso a despedirme

Att. CR

1 respuesta más de otro experto

Respuesta
1
Para asignar criterios personalizado a los filtrajes grabados, debes usar una variable auxiliar.
Supongo que tú te paras en la celda que usas como criterio y le das Ctrl+C y ejecutas la macro, bueno, no debes darle Ctrl+C, suponiendo que te paras en A1.
'Declaras la variable auxiliar
dim vartemp as string
'te paras en A1
range("a1").select
'recuperas el valor de A1 en la variable adicional
vartemp = activecell
'luego la usas como criterio:
Selection.AutoFilter Field:=2, Criteria1:=vartemp, Operator:=x1And
'.
'.
'.
'Te doy un dato adicional.
'Si tu criterio es por ejemplo, filtrar valores mayores o iguales a 100, la macro grabado quedaría:
Selection.AutoFilter Field:=2, Criteria1:=">=100", Operator:=x1And
'Para personalizar este criterio, debes añadir ">=" depués de capturar el valor de la celda A1, como en el ejemplo.:
range("a1").select
vartemp = activecell
vartemp = ">=" & vartemp
Selection.AutoFilter Field:=2, Criteria1:=vartemp, Operator:=x1And

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas