Copiar columnas a otra hoja en excel

Tengo un excel con más de 2.000 columnas. Utilizo varias de ellas para hacer gráficos.

Me gustaría poder copiar sólo aquellas columnas que voy a necesitar para hacer los gráficos a otra hoja (para no trabajar con tantos datos), y no he conseguido hacerlo con macros sin que me de error. Necesitaría sacar, por ejemplo, 9 columnas (por el nombre de cabecera) y que me las copiara en otra hoja. En la tercera pestaña ya me encargaría yo de montar las gráficas, pero si pudieran ayudarme con lo anterior sería una gran ayuda.

Ej: ésta sería la disposición de las columnas (que no están seguidas unas detrás de otras en el excel):

GRUPO1

Columna 1, Columna 3, Columna 23, ... (así hasta 9 columnas)

GRUPO2

Columna 12, Columna 31, Columna 230, ... (así hasta 13 columnas)

GRUPO3
Columna 123, Columna 166, Columna 30, ... (así hasta 25 columnas)

GRUPO4

Columna 52, Columna 318, Columna 2, ... (así hasta 14 columnas)

GRUPO5
Columna 650, Columna 151, Columna 80, ... (así hasta 11 columnas)

Es decir, decirle qué columnas debo copiar en función del nombre que tienen (a menudo tengo que actualizar los archivos con nuevos datos y así, si sé que copio los datos por su nombre y no por su posición en excel, no hay lugar a confusión).

1 respuesta

Respuesta
1

Te parece bien si creamos una hoja llamada "columnas" en donde puedas poner el nombre (supongo que te refieres al título de la columna), ejemplo:

Hoja "columnas" :

A B

1 Título columna

2 Identificador

3 Valor

4 Subtotal

Entonces la macro leería los títulos que pusiste en la columna A de la hoja "columnas", los buscaría en tu hoja de datos y copiaría toda la columna a una hoja nueva.

Hola Dam, gracias por contestar.

El nombre de las columnas que voy a utilizar va a ser siempre el mismo, ¿seria posible que me buscara los nombres desde la misma macro?

Saludos,

Hola de nuevo,

he encontrado este código y viene a ser lo que estoy buscando:

Sub CopiaCol()
' Macro desarrollada el 04/12/2008 por Elsamatilde
'para crear una hoja nueva
Sheets.Add
nbre = ActiveSheet.Name
'volver a la hoja original para copiar col
Sheets("Hoja1").Select
ActiveSheet.Range("A:A").Copy Destination:=Sheets(nbre).Range("A1")
'copiar 2do rango en col B
ActiveSheet.Range("M:M").Copy Destination:=Sheets(nbre).Range("B1")
'repetir para el resto de las col, ajustando col destino
End Sub

El problema es que mi hoja (la que contiene los datos), trae por defecto un nombre que necesito para identificarla, ¿cómo podría decirle que, en vez de "Hoja1", cogiera los datos de la hoja, independiente del nombre que tenga?, ¿es posible?

Muchas gracias

Te regreso la macro con los cambios.

Sub CopiaCol()
'Por Elsamatilde
'Por.Dam
'para crear una hoja nueva
actual = ActiveSheet.Name
Sheets.Add
nbre = ActiveSheet.Name
'volver a la hoja original para copiar col
Sheets(actual).Select
ActiveSheet.Range("A:A").Copy Destination:=Sheets(nbre).Range("A1")
'copiar 2do rango en col B
ActiveSheet.Range("M:M").Copy Destination:=Sheets(nbre).Range("B1")
'repetir para el resto de las col, ajustando col destino
End Sub

Saludos.Dam

Gracias Dam, pero ¿cómo le puedo indicar que me copie los datos de la columna llamada, por ejemplo, "Identificador", en vez de ("A:A")?

Las columnas no siempre son iguales, por eso necesito que las copie según el título de la columna.

Por eso te comentaba que hiciéramos una hoja, donde anotaras las columnas que deseas copiar, realizas el proceso de copiado, para la siguiente vez que requieras copiar otras columnas, entras a la hoja y cambias los nombres y vuelves a procesar, es más sencillo hacerlo de esta manera que entrar a la macro y estar corrigiendo las columnas que necesitas.

Tienes razón, si, te agradecería si me echaras una mano con esto.

¿Necesitas que te envíe un ejemplo o con lo que puse anteriormente es suficiente?

Saludos,

Escribe 10 nombres de tus columnas y de esos 10, escribe tres nombres que quieres copiar .

También dime cómo se llama tu hoja de datos.

Saludos. Dam

Te anexo un archivo con la macro, copia toda tu hoja de datos al archivo que te estoy enviando, dentro de la hoja que se llama "hoja de datos"

En la hoja "columnas", verás un breve instructivo.

https://www.dropbox.com/s/bv5hoxcx3l41jf3/copia%20columnas%20por%20su%20nombre.xls

Saludos. Dam

Podrías.

Hola Dam, el enlace me da error, no consigo descargarlo.

Puedes darme un correo y te envío el archivo.

Saludos. Dam

Añade tu respuesta

Haz clic para o