Cómo selecciono columnas discontinuas con una Macro Excel

Tengo una Base de datos que contiene varias columnas y requiero para hacer un reporte con la información, pero las tengo en columnas discontinuas y además el número de filas es variable ya que filtro la tabla según un criterio especifico. Lo he realizado pero con procesos separados, les muestro lo que tengo:

Sub copia()
'
' Instrucciones de selleción y copiado
'
Sheets("BDatos").Select
Range("A7:C7").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Aporte_Regular_002").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("BDatos").Select
Range("H7").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Aporte_Regular_002").Select
Range("E2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("BDatos").Select
Range("Z7").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Range("A1").Select
Sheets("Aporte_Regular_002").Select
Range("F2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
End Sub

Que me sugieren para hacer la selección en un solo paso, y adicionalmente, como hago para incluir un condicional "IF"ELSE" para seleccionar la página de destino o donde voy ha copiar la información.

Respuesta
1

Te anexo la macro con un If para poner una condición y elegir la hoja destino. También simplifiqué un poco la copia de las columnas

Sub copia()
'Act. Por Dante Amor
' Instrucciones de selleción y copiado
'
    Application.ScreenUpdating = False
    Set h1 = Sheets("BDatos")
    '
    'Seleccionar hoja destino
    If condicion = 1 Then
        hoja = "Aporte_Regular_002"
    Else
        hoja = "Aporte_Regular_003"
    End If
    Set h2 = Sheets(hoja)
    u1 = h1.Range("A" & Rows.Count).End(xlUp).Row
    '
    h1.Range("A7:C" & u1).Copy
    h2.Range("B2").PasteSpecial Paste:=xlPasteValues
    h1.Range("H7:H" & u1).Copy
    h2.Range("E2").PasteSpecial Paste:=xlPasteValues
    h1.Range("Z7:Z" & u1).Copy
    h2.Range("F2").PasteSpecial Paste:=xlPasteValues
    MsgBox "Copia terminada"
End Sub

.

'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