Copiar datos especificos con autofiltro

Estoy tratando de copiar solo los datos filtrados de la columna B de una hoja de cálculo a otra, el inconveniente es que la macro con la que estoy trabajando esta situación pega todos los valores de la tabla comprendida en las columnas B: I desde la fila 3 en adelante, a continuación, muestro el código que estoy ajustando a este caso, si es posible espero su ayuda en este caso

Sub ConditionalCopy()
Set H1 = Sheets("VINCULACION_SV")
Set H2 = Sheets("SEN_CONTENIDO_TABLERO")
j = H2.Range("D" & Rows.Count).End(xlUp).Row + 1
i = 3
With H1
    If .Cells(i, "B").Value <> "" Then
        .AutoFilterMode = False
        .Range("B3:B3").AutoFilter
        .Range("B3:B3").AutoFilter , Field:=5, Criteria1:="<>"
        . UsedRange. SpecialCells(xlCellTypeVisible).Copy Destination:=Range(Cells(j, "D"), Cells(j, "D"))
        .AutoFilterMode = False
        Application.CutCopyMode = False
    End If
End With
End Sub

1 Respuesta

Respuesta
1

Puedes comentar lo siguiente y en este orden:

¿De cuál hoja quieres copiar?

¿En cuál hoja quieres pegar?

¿Cuál es la condición?

¿En cuál columna se aplica la condición?

¿De cuál columna a cuál columna quieres copiar?

Y supongo que quieres pegar en la columna D en la siguiente fila disponible.

Quiero copiar los datos de la columna B de la hoja VINCULACION_SV hacia la columna D de la hoja SEN_CONTENIDO_TABLERO, la condición particular es que las celdas ubicadas en la columna F de la hoja VINCULACION_SV no estén vacías para así poder copiar los datos de la columna B de la misma hoja en la hoja SEN_CONTENIDO_TABLERO, el inconveniente es que las celdas dispuestas en la columna F están validadas por una formula y su valor varía respecto al resultado, es decir estas celdas están formuladas y el resultado de la fórmula es un valor definido o un dato vacío " ", en este sentido quiero pegar estos valores en la columna D de la siguiente fila disponible en la hoja destino.

El resultado de la fórmula es un valor definido o un dato vacío " "

¿Es un dato vacío o ed un espacio?

Puedes poner aquí la fórmula.

El resultado puede ser un valor o un espacio " " depende del resultado de la formula contenida en la columna F, la cual es =SI(I3=0;" ";I3)

La referencia de la fórmula viene de otro libro de Excel con diferente hoja de cálculo a donde da el resultado

:

Criteria1:="<>"

En tu macro buscas diferente de vacío.

Si tienes espacio, entonces debería ser diferente de espacio:

"<> "

O corregir la fórmula, para que sea vacío: ""

Eso es lo recomendable, para que no estés batallando en todas las macros y en las subsecuentes fórmulas que revisan esas celdas.

Ajuste la fórmula para que sea vacío, y concuerde con el autofiltro de la macro que mencione al inicio, pero de igual manera aun sigo sin poder solo copiar los datos de la columna B, ya que este código me pega todos los datos desde fila 3 con rango entre las columnas B: I que cumplen con la condición indicada.

Quiero compartirles la solución que halle para el proceso que buscaba

Option Explicit
Sub ConditionalCopy()
    Dim H1 As Worksheet: Set H1 = ThisWorkbook.Sheets("VINCULACION_SV")
    Dim H2 As Worksheet: Set H2 = ThisWorkbook.Sheets("SEN_CONTENIDO_TABLERO")
    Dim j As Long: j = H2.Range("D" & H2.Rows.Count).End(xlUp).Row + 1
    Dim i As Long: i = 3
    Dim LastRow As Long
    With H1
        If .Cells(i, "B").Value <> "" Then
            .AutoFilterMode = False
            .Range("B3:B3").AutoFilter , Field:=5, Criteria1:="<>"
            LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
            .Range("B4:B" & LastRow).SpecialCells(xlCellTypeVisible).Copy H2.Range("D" & j)
            .AutoFilterMode = False
            Application.CutCopyMode = False
        End If
    End With
End Sub

Saludos Dante Amor, gracias por tu tiempo y ayuda en este caso que presente.

Espero esta situación y resolución le pueda servir a alguien más.

Me alegra saber que funciona para ti. Grac ias por comentar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas