MACRO para copiar un valor y filtrar otra hoja con ese valor

Estoy creando un archivo para manejar capacitaciones dentro de la empresa. Lo que estaría necesitando es crear una macro que haga lo siguiente:

- Copie el nombre de la capacitación de la celda C4 de la hoja "Actualización"

- Filtre la columna D de la "Hoja1" utilizando el valor copiado de la celda C4. Aquí esta el problema, ya que cuando intento grabar la macro, el código mostrado es el texto y no el valor de la celda.

- Filtre la columna E de la "Hoja1" para mostrar únicamente celdas vacías

- Copie todos los valores de la columna A de la "Hoja1" ya filtrada y los pegue a partir de la celda C7 de la hoja "Actualizacion" omitiendo los valores repetidos

- Crear un checkbox en la columna B de la "Hoja1" si la celda C no está vacía

- Borre todos los filtros de la "Hoja1"

Es mi primera pregunta en el foro; si por alguna de esas casualidades la pregunta esta mal hecha.

1 Respuesta

Respuesta
2

Te anexo la macro para lo siguiente:

1. Captura el dato en la hoja "actualización", celda C4

2. Ejecuta la macro. Si no hay dato, te envía un mensaje

3. La macro realiza los 2 filtros

4. Si hay información en la columna A, la copia y la pega en la hoja "actualización" celda C7

5. Si no hay información te envía un mensaje

6. Quita los duplicados

7. Quita los filtros de la hoja1



Sub Filtrar()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Actualización")
    '
    dato = h2.[C4]
    If dato = "" Then
        MsgBox "Captura un dato en C4"
        Exit Sub
    End If
    '
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
    u = h1.Range("D" & Rows.Count).End(xlUp).Row
    h1.Range("A1:E" & u).AutoFilter Field:=4, Criteria1:=dato
    h1.Range("A1:E" & u).AutoFilter Field:=5, Criteria1:="="
    '
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    If u = 1 Then
        If h1.AutoFilterMode Then h1.AutoFilterMode = False
        MsgBox "No hay datos a copiar"
        Exit Sub
    End If
    '
    h1.Range("A2:A" & u).Copy
    h2.Range("C7").PasteSpecial xlValues
    '
    u2 = h2.Range("C" & Rows.Count).End(xlUp).Row
    h2.Range("C7:C" & u2).RemoveDuplicates Columns:=1, Header:=xlNo
    '
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
    Application.ScreenUpdating = True
    MsgBox "Fin"
End Sub

No entendí este punto:

Crear un checkbox en la columna B de la "Hoja1" si la celda C no está vacíaCrear un checkbox en la columna B de la "Hoja1" si la celda C no está vacía

Para resolver el punto anterior, con todo gusto te sigo colaborando, crea una nueva pregunta en el tema de excel, en el desarrollo de la pregunta escribe: "Para Dante Amor"; ahí me explicas con detalle y con un ejemplo lo que necesitas.


.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas