Obtener los valores de una columna de Excel

Resuelto
roberto93 Mensajes publicados 14 Estado Miembro -  
azitech Mensajes publicados 1 Estado Miembro -
Hola,

Quiero recuperar los valores de una columna de la hoja 1 y enviarlos a la hoja 2.
Tengo 12 hojas, quiero automatizar el proceso para ir más rápido porque tengo que hacer lo mismo en docenas de libros.
La hoja 1 agrupa los datos durante todo el año, cada mes está en una columna

columna A Columna B Columna C Columna D y así sucesivamente....
Mes Actividad Duración de la actividad Mes

Quiero recuperar los datos de los meses (columnas) solamente de la hoja 1 y copiarlos/pegarlos en la hoja 2, 3, 4...12
en la celda N23 en todas las hojas.

Aquí está por ahora la macro que tengo

Sub Macro2()

Selection.Copy
Sheets(ActiveSheet.Name).Select
Range("N23").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
End Sub

Concluyo que hay que añadir una variable de incremento para leer las columnas deseadas y recuperar los valores.
Para una columna no es lo mismo que para las filas; no se puede hacer i = i + 1, hay que usar el código ASCII y hacer un doble bucle para las columnas con dos letras. ¿Cómo debería hacerlo?
En el código ASCII A = 65
Necesito su ayuda para resolver mi problema
Gracias de antemano
Configuración: Windows 2000 Internet Explorer 6.0

4 respuestas

  1. Mike-31 Mensajes publicados 18405 Fecha de registro   Estado Colaborador Última intervención   5 147
     
    Hola,

    puedes usar un código sencillo y fácil de escribir y seguir

    Sub Macro1()
    '
    Sheets("Feuil1").Select
    Columns("A:A").Copy
    Sheets("Feuil2").Select
    Range("A1").Select
    ActiveSheet.Paste

    Sheets("Feuil1").Select
    Columns("B:B").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Feuil3").Select
    Range("A1").Select
    ActiveSheet.Paste

    ' agrega aquí el código para las doce hojas

    Sheets("Feuil1").Select
    Range("A1").Select
    Application.CutCopyMode = False
    End Sub

    A+
    2
    1. roberto93 Mensajes publicados 14 Estado Miembro
       
      Gracias por tu ayuda. he utilizado tu método, es suficiente para mí

      Sin embargo, ¿no hay una forma de hacer un bucle? imaginemos que teníamos más de 100 columnas para copiar. ¿Cómo debemos proceder?

      Atentamente,
      -1
  2. pitchoooo
     
    Hola
    yo había hecho esta macro para buscar una celda que contenía cierta cadena de caracteres aquí ------Application----- y eliminaba todas las celdas después si puede ayudarte .

    Sub appli()
    Dim i As Long
    Dim j As Long
    Dim k As String
    Dim kk As String
    i = 1
    jj = 65
    j = 65
    k = Chr(j)
    kk = Chr(jj)
    For jj = 65 To 72 Step 1
    kk = Chr(jj)
    For j = 65 To 90 Step 1
    k = Chr(j)
    'Do While ActiveSheet.Range(kk & k & i).Value <> ""
    'For jj = 65 To 73 Step 1
    'For j = 65 To 90 Step 1
    Do While i <> 1000

    If ActiveSheet.Range(kk & k & i).Value = " ------------Applications (WMI)---------" Then
    ActiveSheet.Range(kk & k & i & ":IV" & i).Delete Shift:=xlToLeft
    End If
    i = i + 1
    Loop
    i = 1
    Next
    'Loop
    Next

    End Sub

    Voila
    ++
    1
  3. azitech Mensajes publicados 1 Estado Miembro 1
     
    cómo pegar un número en una columna varias veces
    1
  4. Mike-31 Mensajes publicados 18405 Fecha de registro   Estado Colaborador Última intervención   5 147
     
    En la misma hoja es posible escribir el código de manera diferente, pero en tu caso hay que tomar una columna distinta de la hoja1 para pegarla en una hoja separada cada vez. por otro lado es posible nombrar cada columna de la hoja 1 y en lugar de escribir en la macro

    Columns("A:A").Copy
    se podría escribir el nombre que se le ha dado a esa columna por ejemplo una.copy o Pierre.copy etc ...

    Sheets("Feuil1").Select ("Feuil1") es el nombre de la hoja principal
    Columns("A:A").Copy esta línea hace referencia a la columna A
    Sheets("Feuil2").Select ("Feuil2") es el nombre de una hoja receptora
    Range("A1").Select A1 es la posición de inicio para pegar la información
    ActiveSheet.Paste y pega

    a partir de este código puedes escribir esta función para cada columna que debes copiar en la hoja de tu elección

    A+

    __________________________________________________________________

    Necesitas ayuda. En el foro, voluntarios se toman el tiempo para descifrar tus explicaciones a veces confusas, y proponen su conocimiento.
    Solución encontrada, ten la cortesía de marcar tu estado como resuelto. Para que tu problema quede clasificado, y sirva de referencia para otros casos similares.
    -1