Ofimática - macro para selecionar columnas excel

   
Vista:

macro para selecionar columnas excel

Publicado por uninc (1 intervención) el 21/04/2008 20:38:34
Hola;

Tengo un problema con una macro para excel, en concreto a la hora de selecionar columnas.

Os comento: llegado el momento, en mi macro tengo que selecionar varias columnas para graficar los datos. Estas columnas podrían llevar por titulo, por ejemplo, una "Nombre" y otra "Apellido". El problema es que dependiendo de las diferentes situaciones (son casi inumerables) las columnas pueden llegar a ocupar lugares diferentes, es decir, en unas ocasiones la columna Nombres será la segunda columna del libro, pero en otras ocasiones puede ser la tercera, la cuarta o la que sea. Lo mismo para la columna "Apellidos"

Os digo lo que he intentado:

1ª opción: en primer lugar, dado que las columnas pueden estar en cualquier posición, busco en la primera fila (fila de titulos) la palabra "Nombre". Cuando la encuentro, meto el numero de columna (el que apunta el contador) en una varible y luego le digo que me seleccione la columna a la que corresponde la variable:

for i=1 to 10
if workbooks(xxxxx).worksheets(xxxxx).cells(1,i)="Nom bre" then
k=i
exit for
end if
next i
workbooks(xxxxx).worksheets(xxxxx).columns(k).sele ct

El problema es que cuando voy a selecionar la otra columna ("Apellidos") con el mismo metodo, como es logico, solo tengo seleccionada esta ultima columna o lo que es lo mismo, la columna "Nombre" se me deselecciona.

Resumiendo, que tengo que seleccionar varias columnas que pueden ocupar posiciones diferentes para graficar los datos que contienen.

Creo que el principal problema al que me enfrento es en relación a las referencias a dichas columnas. ¿Se puede hacer referencia a una columna mediante numero en vez de letras? Ed decir Range("1:1") en vez de Range("A:A") para referirnos a la primera columna. En ese caso como puedo hacer para referirme a varias columnas mediante numeros.

Si algo no se entiende o no queda claro, por favor comunicarmelo y lo intento resolver.

Os agradeceria vuesntra contestacion.

Gracias y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:macro para selecionar columnas excel

Publicado por Antoni Masana (12 intervenciones) el 22/04/2008 10:24:44
Se puede Hacer de varias formas pero te cuento una:

Paso 1 - Seleccionas 1º Columna. Ejem: D

for i=1 to 10
if workbooks(xxxxx).worksheets(xxxxx).cells(1,i)="Nom bre" then
k=i
exit for
end if
next i

Letra= chr$(k+64) -------- Convierte numero de columna en letra
Colum = Letra+":"+Letra+","

Paso 2 - Seleccionas 2º Columna. Ejem: H

for i=1 to 10
if workbooks(xxxxx).worksheets(xxxxx).cells(1,i)="Apellido" then
k=i
exit for
end if
next i

Letra= chr$(k+64)
Colum = Colum +Letra+":"+Letra

Paso 3 - Marcar seleccion de columnas

workbooks(xxxxx).worksheets(xxxxx).columns(Colum).sele ct

Colum vale : "D:D,H:H"

Esto es una macro de excel. Selecciona las columnas D, H y B

Sub Macro1()
'
' Macro1 Macro
' Macro grabada el 22/04/2008
'
Range("D:D,H:H,B:B").Select
Range("B1").Activate
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:macro para selecionar columnas excel

Publicado por sergio (4 intervenciones) el 11/01/2010 22:22:57
amigo creo que tengo la solucion.
prueba asieno esto(es una conbinacion entre macros y funciones definidas en excel)

primero escrive en una columna todo los campos(estoy pensando en una base de datos) que quieras encontrar (supon que los escribiste en la columna AA) en la columna siguiente (AB1) escribe:

=Coincidir(AA1;Vc;0) <------------esto lo escribes en AB1

Vc: es el vector en donde estan los campos que buscas (no importa que en algunas columnas no allas escrito nada)
pnte en el caso que hallas escrito un campo en A1, B1 hasta D1 estan vacios, y luego tienes campos en E1 y F1, entonces en Vc deberas de poner A1:F1

el cero te indica que deceas una coincidencia excta.

De esta manera tendra en AB el numero de orden, dentro del vector, de todos los campos que buscas para luego graficar

Ahora pasemos a la macro

No tengo mucho tiempo pada revisar la correcta sintaxis del lenguaje visual basic
asi que te expicare a grandes rasgos lo que deves hacer

Pidele a la macro que seleccione el primer registro de todos los campos que obtubiste con la funcion coincidir (esto si se puede hacer con macros), quedaran selecionadas todas los primeros registros de los campos que necesitas, y activa la ultima celda que selecionaste, luego pidele a la macro que llegue al ultimo valor de la columna.(shif+Ctrl+Flecha abajo), (con esto quedaran celecionada todos los primeros registros de los campos que necesitas y la ultima columna del campo que necesitas

Seguidamente pidele que active la penultima celda que selecionaste (ojo con esto que este es todo el truco, debes de pedirle que active otra celda, no que la seleccionde) y dile que baje hasta el ultimo valor de la columna

todo esto lo puedes hacer con siclos como el for...next, el Do....While o el Do...util(ahy tu eliges) y con dos o tres contadores

Si no sabes como llegar al ultimo vaor de la columna preguntaselo al grabador de macros de excel inicia la grabacion de una macro posisionate en cualquier celda y presiona lc conviacion de teclas shif+Ctrl+Flecha abajo. Luego ve a modificar la macro y obtendras el codigo para hacer lo que necesitas.

Cuando alla terminado el ciclo For...Next que ocupaste para selecionar simultaneamente todos los datos que necesitavas le dices que ahroa si quieres graficarlos.

Espero haberme explicado lo suficientemente claro para poder ayudar

cualquier duda posteas de nuevo y ya
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar