Saltar al contenido

Copiar datos de una hoja en otra


ANANDA

Recommended Posts

publicado

Hola

Seguro que es algo básico pero me estoy volviendo loca, mi nivel en macros es nulo.

Tengo una hoja con datos en diversas columnas, incluídas celdas en blanco.

Quiero que se copien todos los datos de las 4 columnas en una sóla, como valores (en el excel original son fórmulas; aquí son valores), eliminando las celdas en blanco.

Y si hago una modificación en la hoja de datos, al volver a ejecutar la macro que elimine los datos del listado y genere los datos de nuevo.

Dejo un ejemplo (o al menos eso creo). Espero que sea lo suficiente claro. Cualquier duda....

Muchas gracias

Prueba.xls

publicado

Buenas, Ananda.........

Pues me temo que de claro tu ejemplo tiene poco............jejejejej.........porque no incluyes ningún ejemplo de cómo debe quedar en la hoja final.........solo dejas las 4 columnas con datos........

Vuelve a subir un ejemplo más completo......para hacernos a la idea de lo que quieres y te intentaremos echar una mano....

Un saludo,

Tese

publicado

Buenas. Si no te importa el orden en el que se copie... te podría servir esto

Sub CopiaDatos()
    Dim Celda As Range
    Dim Paso As Integer

    Paso = 2

    For Each Celda In Range("A2:D12")
        If Celda <> "" Then
            Sheets("Hoja2").Cells(Paso, 1) = Celda
            Paso = Paso + 1
        End If
    Next Celda
End Sub

publicado

Hola Pinta.

El orden en el se copie no me importa de primeras, pero sí lo quiero tener ordenado.

Es decir, poner los valores en una única columna, ordenado, sin duplicados y, que si vuelvo a ejecutar la macro, elimine esos datos y genere la lista de nuevo.

Saludos

publicado

Prueba Con esto.

Saludos,

Sub CopiaDatos()
    On Error GoTo Plof
    Dim Celda As Range
    Dim Paso As Integer
    Dim Datos As Collection

    Paso = 2

    Set Datos = New Collection 'Creamos una colección para eliminar duplicados

    Sheets("Hoja2").Range("A2:A65536").ClearContents 'Borramos los datos hoja2

    For Each Celda In Range("A2:D12")
        If Celda <> "" Then
            Datos.Add Celda, CStr(Celda)
        End If
    Next Celda

    For Each Item In Datos
        Sheets("hoja2").Cells(Paso, 1) = Item
        Paso = Paso + 1
    Next

    Sheets("Hoja2").Columns("A:A").Sort Key1:=Sheets("Hoja2").Range("A2"), Order1:=xlAscending, Header:=xlYes 'Ordenamos la columna A de la hoja2

    Exit Sub
Plof:
    If Err.Number = 457 Then
        Resume Next 'Evitamos los elementos duplicados
    Else
        MsgBox (Err.Number & "-" & Err.Description)
    End If
End Sub

publicado

No he probado aún pero por si acaso pregunto...

Mi excel está en inglés. Reconoce la programación o tengo que cambiar Celda por Cell, Datos por Data, Paso por Step?

O son textos como los explicativos que hay tras la '

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.