Macro excel copia datos

Necesito una macro de excel que permita copiar celdas con contenido (es un arbol genealogico que tiene mas de cien nombres de personas) en otra hoja pero en columna. Los datos en la hoja del arbol genealogico estan dispersos, con celdas vacias intermedias y lo que quiero es poner todos esos nombres en columna, uno detras de otro.
Respuesta
1
¿Me imagino que al referirte a contenido te refieres a objetos que están insertados en tu libro y que los vas a copiar en otro lado?
Para hacer eso lo que realmente necesitas es saber el nombre de los objetos
Para que me entiendas, graba una macro copiando no la celda, si no señalando el objeto y copiándolo
Saludos en primer lugar y agradecimiento por la pronta respuesta.
En segundo lugar pedir disculpas, pues cuando decía celdas con contenido me refería a que no están vacías sino que cada una de ellas tiene un nombre y apellidos, pues es un árbol genealógico.
Dichas celdas están dispersas, es decir hay celdas vacías entre ellas, con los nombres de los bisabuelos, abuelos, padres, sobrinos, etc., y lo que quiero es una macro que me copie todos los nombres que hay en la hoja y me los ponga en otra hoja pero todos en una sola columna.
Seria como hacer un listado o indice de los nombres que he puesto en el árbol genealógico, que en algunos casos es hasta 90.
Gracias, de nuevo
A ver si te entiendo, en la celda A1 tienes un nombre, la celda A2 esta vacía, en la celda A3 tienes otro Nombre, B1 esta vacío, en B2 tienes otro nombre, en B3 tienes otro nombre.
Y quieres que en una nueva hoja copia todos los nombres que están en A y en B en una lista sin consecutiva, es decir elimine los espacios en banco:
Ejemplo
En la nueva hoja quieres que aparezca un listado como este:
Nombre1(A1 hoja Anterior)
Nombre2(A3 hoja Anterior)
Nombre3(B2 hoja Anterior)
Nombre4(B3 hoja Anterior)
Esta macro copia desde la Hoja "8" a la Hoja "9"
Sub Copia_solo_celdasNoVacias()
'
'
    Sheets("8").Select
    Dim strColumk As String
    Dim strFilk As String
    strColumk = InputBox("Ingrese Nombre de la Columna:")
    strFilk = InputBox("Ingrese Ultima Fila a Revisar:")
    fila = strColumk & 1
    Range(fila).Activate
    Range(fila).Select
    For i = 1 To strFilk
    filaAc = ActiveCell.Row
    filaR = strColumk & filaAc + 1
    k = Range(filaR).Value
    If Range(filaR) = IsNull(ActiveCell) Then
    Else
    Sheets("9").Select
    k5 = Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
    Range("A" & k5).Select
    ActiveCell.FormulaR1C1 = k
    End If
    Sheets("8").Select
    Range(filaR).Select
    Next i
End Sub
Saludos:
Casi perfecto, pero solamente consigo que haga un listado de la columna A, no me recoge datos del resto de columnas, que son 55.
Cuando me dice ingrese el nombre de la columna solamente me deja escribir una letra, no se como hacer para introducir un rango por ejemplo A:BY
Muy agradecido
Francisco
Esta Macro debería hacer lo que necesitas, sigue las indicaciones que te pide, si es lo que necesitas no olvides finalizar la pregunta.
Sub Copia_solo_celdasNoVacias()
'
'
    Sheets("8").Select
    Dim strColumk As String
    Dim strFilk As String
    Dim strNumCol As String
    Dim columR As String
    strColumk = FormatNumber(InputBox("Ingrese el Numero de la Columna inicial, es decir A=1; B=2;C=3,etc:"))
    strNumCol = FormatNumber(InputBox("Ingrese El número de Columnas a revisar"))
    strFilk = InputBox("Ingrese Ultima Fila a Revisar:")
    Cells(1, strColumk).Select
    For i = 1 To strNumCol
    columAc = ActiveCell.Column
        For KIKE = 1 To strFilk
        filaAc = ActiveCell.Row
        k = Cells(filaAc + 1, columAc).Value
        If Cells(filaAc + 1, columAc) = IsNull(ActiveCell) Then
        Else
        Sheets("9").Select
        k5 = Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
        Range("A" & k5).Select
        ActiveCell.FormulaR1C1 = k
        End If
        Sheets("8").Select
        Cells(filaAc + 1, columAc).Select
        Next KIKE
    Sheets("8").Select
    Cells(1, columAc + 1).Select
    Next i
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas