Macro copiar y pegar celdas activas respetando celda llena de hoja destino

Tengo la hoja "Data" de la cual necesito copiar las celdas que valla activando y pegarla a la hoja "Destino" desde la celda "A5"

Por ejemplo, si selecciono de la hoja "Data" las celdas A2; B3; A8 estas deberían pasar a la hoja destino desde la celda A5 hacia abajo en A5; A6 ; A7; y si vuelvo a seleccionar celdas en la hoja "Data" estas deben seguir pegando pero ahora desde la celda vacia en la columna "A" vale decir desde A8.

En la imagen que muestro, mi primera selección esta en amarillo, luego seleccione lo de rosado .

Gracias por su ayuda

1 Respuesta

Respuesta
2

Para realizar lo que necesitas debe hacer con VBA. Si estás de acuerdo te ayudo con el código.

Tengo las siguientes dudas, puedes responder en el siguiente orden.

1. En la hoja "Data" vas a seleccionar datos solamente de las columnas A o B o puede ser cualquier columna.

2. Siguiendo con tu ejemplo. Si seleccionas otra vez el mismo dato, por ejemplo, si seleccionas nuevamente la celda A2 con la palabra "Hola", qué debo hacer, poner "Hola" en la celda A10 o ya no ponerlo.

3. Siempre estarás seleccionando de celda en celda o puedes seleccionar un rango de celdas y entonces el código VBA tome solamente las celdas que contienen datos.

4. Tu planteamiento: "si selecciono de la hoja "Data" las celdas A2; B3; A8". De esa manera, deberás presionar un botón, para indicar que terminaste la selección de celdas.

1.- si podría seleccionar celdas de diferentes columnas.

2.- Pues ya no debería ponerlo para que no se duplique, pero si se complica no habría problema.

3.- si, solo de celda en celda.

4.- si es lo mas recomendable si.

Muchas gracias por tu ayuda.

2.- Pues ya no debería ponerlo para que no se duplique

Siendo así, entonces puede ser sin botón y funcionaría en automático cada vez que selecciones una celda.

Pon el siguiente código en los eventos de la hoja "Data"

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim c As Range, f As Range
  For Each c In Target
    If c.Value <> "" Then
      With Sheets("Destino")
        Set f = .Range("A:A").Find(c.Value, , xlValues, xlWhole, , , False)
        If f Is Nothing Then .Range("A" & Rows.Count).End(3)(2).Value = c.Value
      End With
    End If
  Next
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet("Data")
  4. En el panel del lado derecho copia la macro
  5. Regresa a la hoja "Data" selecciona tus celdas, en automático se registrarán en la hoja "Destino"

Muchas gracias, funciona de maravilla; solo que en ocasiones selecciono celdas que no necesariamente necesito que pasen a la hoja destino...

En este caso si me ayudaría que pueda estar en un botón...

Disculpa es que no había entendido el objetivo de la pregunta 5.. 

Pon el siguiente código en un botón:

Sub Copiar_Celdas()
  Dim c As Range, f As Range
  For Each c In Selection
    If c.Value <> "" Then
      With Sheets("Destino")
        Set f = .Range("A:A").Find(c.Value, , xlValues, xlWhole, , , False)
        If f Is Nothing Then .Range("A" & Rows.Count).End(3)(2).Value = c.Value
      End With
    End If
  Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas