Como crear un String para filtrar una tabla, adjunto foto

Estoy metido en un proyecto de macros en excel, y tengo la siguiente duda!

Tengo una tabla ya filtrada para ciertos elementos, ahora estoy intentando filtrar la segunda columna por los elementos que aparezcan mas de 1 vez, he conseguido crear otra tabla en otra pagina que me copia y pega solo dichos valores, solo los valores que aparecen mas de una vez, ahora mi idea era, recorrer dicha columna para crear un sstring con los nombres de los procesos, por ejemplo llamemoslo,

Dim NombreProc as String

De manera que luego pueda aplicar esta linea de codigo

RangeDats4. AutoFilter Field:=2, Criteria1:= "NombreProc", Operator:=xlFilterValues y asi que la tabla aplique dicho filtro para las palabras contenidas al String, que seran las que aparezcan mas de una vez

Gracias de antemano, adjunto foto

1 respuesta

Respuesta
1

No entendí, podrías explicar con ejemplos lo que tienes y lo que esperas.

No te preocupes por el código, yo te ayudo.

Vale Dante, Gracias por contestar, Te vuelvo a adjuntar 2 fotos, a ver tengo una macro hecha, y una vez subo un documento a la macro, se me generan muchos ventanas, pues necesito arreglar este problema y ya tendré hecho el trabajo.


En la primera imagen que te voy a pasar vas a ver una tabla y tengo seleccionada la pestanya para filtrar dicha tabla, lo que necesito es que solo se queden los valores que aparecen en la tabla MÁS DE UNA VEZ.

En la segunda imagen que te voy a pasar tengo otra hoja que me copia y pega los valores que aparecen más de una vez, es decir, ahora lo que necesito es una variable nueva String que me copie todos los valores de la columna C de la segunda hoja, de manera que quede algo así

Dim NumeroProc As String

NumeroProc = ("BEOLOXISPC" "OAVA2ERPRT" ""OLEVBORMON" "OSIGMASPC") Y asi de esta manera yo luego en mi macro puedo anyadir esta linea de codigo

RangeDats3.AutoFilter Field:=2, Criteria1:=NumeroProc, Operator:=xlFilterValues

para que me devuelva como resultado la 3 foto 

Sigo sin entender qué quieres. O no entiendo para qué crear otra, luego tomar los valores, armar una especie de arreglo de string, regresar a la hoja, realizar un filtrado, esto es más complicado.

No te sirve filtrar los registros con el valor que tienes en la columna D, es decir, ¿Todos los registros que son mayores a 1?

Solamente quieres eso, ¿filtrar la columna B con los elementos que aparezcan mas de 1 vez?

Te anexo 2 macros para filtrar la columna B con los elementos que aparecen más de una vez.

Sub Macro2()
'Por Dante Amor
' Filtrar columna B con los elementos que aparezcan mas de 1 vez
    Dim arreglo()
    If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
    u = Range("B" & Rows.Count).End(xlUp).Row
    For i = 2 To u
        If WorksheetFunction.CountIf(Range("B" & i & ":B" & u), Cells(i, "B")) > 1 Then
            ReDim Preserve arreglo(n)
            arreglo(n) = Cells(i, "B")
            n = n + 1
        End If
    Next
    ActiveSheet.Range("$A$1:$B" & u).AutoFilter Field:=2, Criteria1:=Array(arreglo), _
        Operator:=xlFilterValues
End Sub

'
Sub Macro3()
'Por Dante Amor
' Filtrar columna B con los elementos que aparezcan mas de 1 vez
    Dim arreglo As New Collection
    If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
    u = Range("B" & Rows.Count).End(xlUp).Row
    On Error Resume Next
    For i = 2 To u
        If WorksheetFunction.CountIf(Range("B" & i & ":B" & u), Cells(i, "B")) > 1 Then
            arreglo.Add Item:=Cells(i, "B").Value, Key:=CStr(Cells(i, "B").Value)
        End If
    Next
    Dim datos()
    ReDim datos(arreglo.Count - 1)
    For i = 1 To arreglo.Count
        datos(i - 1) = arreglo.Item(i)
    Next
    ActiveSheet.Range("$A$1:$B" & u).AutoFilter Field:=2, Criteria1:=Array(datos), _
        Operator:=xlFilterValues
End Sub


[sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas