Hojas de cálculo en Excel - página principal

Mi primer macro en excel

Quizás debería haber comenzado por el principio, así que más vale tarde que nunca...

Si nos preguntamos ¿cómo podemos crear un macro desde excel?, tenemos varias posibles respuestas:

1.- Desde el menú Herramientas, seleccionando Macro, y a continuación Grabar nueva macro.... Nos aparecerá una ventana, y deberemos indicar el nombre que queremos darle al macro, si no deseamos dejar el que nos propone por defecto excel (Macro1, Macro2, Macro3, etc.). Los nombres de las macros tienen ciertas limitaciones, como por ejemplo que no pueden empezar por un número, ni por un guión, ni pueden tener nombres compuestos, es decir, nombres con más de una palabra, …para solventar esto último, podemos utilizar el guión bajo si queremos darle al macro un nombre más descriptivo. Una vez informado del nombre del macro, pulsaremos el botón aceptar, tal y como aparece en la siguiente imagen:


Seguidamente nos aparecerá una pequeña barra de grabación de macros, y solo nos quedará realizar las operaciones o tareas que queremos programar en la hoja de cálculo, por ejemplo, cambiar el dato de una celda, imprimir la hoja, y guardar y cerrar el libro de excel. Una vez hayamos realizado esas tareas repetitivas que queremos que realice el macro, solo nos quedará detener la grabación del macro, pulsando el botón que aparece a la izquierda, en la barra de grabación de macros (de esa pequeña barra que nos ha aparecido en el momento de empezar a crear la macro), es decir, en el botón que muestra un cuadradito de color azul, tal y como se puede observar en la siguiente imagen:


2.- La otra opción, es ir directamente al modo VBA (Visual Basic for Applications), lo que nos permitirá introducir las líneas de programación directamente, y donde veremos también el código que genera excel, tras utilizar la grabadora de macros.

Para entrar en modo VBA, tan solo deberemos pulsar la tecla Alt y sin soltarla, pulsar también la tecla F11. De esa forma, nos aparecerá una ventana donde a la izquierda nos aparecerán por defecto los proyectos, y las propiedades de los objetos.

Para poder comenzar a introducir unas líneas de código o el macro, de esta forma, tenemos dos opciones:

a) Crear el macro seleccionando en la parte correspondiente al proyecto, la carpeta llamada Microsoft Excel Objetos, y dentro de ella, pulsando sobre ThisWorkbook. Si cliqueamos dos veces sobre ThisWorkbook, nos aparecerá una ventana en blanco a la derecha, para comenzar a programar.

b) Crear el macro en un módulo. Por defecto un libro de excel nos viene sin módulos, para lo cual, tendremos que crearlo desde el menú de VBA Insertar, y seleccionando Módulo. Una vez hecho eso, veremos una nueva carpeta llamada Módulos, al mismo nivel que la de Microsoft Excel Objetos, y dentro un módulo llamado Módulo1 (al que se le puede cambiar el nombre, si lo deseamos). De esta otra forma, también nos aparecerá una ventana a la derecha para comenzar a programar, si nos cliqueamos dos veces sobre Módulo1.

A modo de ejemplo, vamos a programar unas líneas en un macro, en un procedimiento que grabaremos en el Módulo1, con el nombre de macro_de_principiante, dentro de un libro nuevo de excel:


Sub macro_de_principiante()
'Escribimos algo en la celda A1
Range("A1") = "Este es mi primer macro en excel."
'Imprimimos la hoja de excel con una sola copia
ActiveWindow.SelectedSheets.PrintOut Copies:=1
End Sub


Ahora cerraremos la ventana de Microsoft Visual Basic donde hemos introducido ese macro, y desde excel, vamos a ver lo que hace el macro. Para verlo en funcionamiento, tenemos varias opciones, una de ellas es asociar el macro a un botón (la mejor y más rápida, pues en cuanto presionemos el botón en cuestión, se ejecutará el macro), y otra que es la que usaremos ahora, para comenzar a hacernos con los macros. Ves a Herramientas, selecciona Macro, a continuación Macros..., sitúate sobre macro_de_principiante (aunque por defecto ya saldrá esa opción seleccionada, pues solo tenemos ese macro), y pulsamos el botón Ejecutar. Tan solo nos quedará acercarnos a la impresora, recoger lo que nos ha salido impreso, y ver también lo que aparece en la celda A1 de nuestro libro de excel.

¿Verdad que es muy sencillo esto de crear macros en excel?.



65 comentarios:

Carlos T. (Karurosu) dijo...

Facil de comprender las instrucciones, me fue sumamente practica tu información.
Gracias...

Javier Marco dijo...

Gracias por tu comentario :-)

VALENTIN dijo...

ENHORABUENA POR LA PAGINA. MUCHAS GRACIAS, PARA LOS QUE UTILIZAMOS EXCEL.
QUISIERA SABER PORQUE NO SE PUEDEN DESCARGAR LOS ARCHIVOS ADJUNTOS.
GRACIAS

Javier Marco dijo...

Gracias por tu comentario.

Debes introducir los 3 caracteres que te aparecen en megaupload, para poder descargar el fichero.

Salu2

VALENTIN dijo...

Accedo a la página y el primer archivo que aparece es mi primera macro en excel, ¿cómo accedo o dónde está el megaupload?.
Muchas gracias.

Javier Marco dijo...

En este caso en concreto no hay fichero para descargar.

Solo he colocado descargas, para aquellos artículos en los que pienso que puede ser de utilidad tener un el fichero con su código, para así ver el macro funcionando. En este caso, es mucho más fácil seguir las instrucciones para poder crearlo uno mismo. Si te imprimes el artículo, y sigues paso a paso las indicaciones, verás que es sumamente sencillo hacer tu primer macro.

Salu2

Anónimo dijo...

Gracias...pero tengo una duda hermano, como puedo introducir los comandos que deseo..bien que en tu ejemplo es para imprimir, pero donde conseguiste ese comando, habra que saber programacion o algo por el estilo...????


gracias...

Javier Marco dijo...

Hola que tal...

Gran parte del código lo puedes generar con la grabadora de macros (1ª opción que presento en el artículo, para crear macros). Otros códigos los puedes obtener a partir de la ayuda de Excel (desde VBA).

Salu2

talankero dijo...

Saludos Amigos:

Como hago para que excel me genere un mensaje automatico cuando en una celda se cumpla una respectiva fecha?

tengo listado de obreros
en a1 el nombre completo
en b1 fecha ingreso
c1 es la celda donde debe salir el mensaje que ya se le cumplieron 45 dias y debe salir a descanso

Javier Marco dijo...

Prueba poniendo esta fórmula en C1:

=SI((HOY()-B1)>=45;"Debe salir a descanso";"")

Saludos.

Anónimo dijo...

Javier muy buena publicacion, ahora mi consulta es como hago tener la misma macro en todos los libros que abra, yo ya hice mi macro y la persanlice con un boton en la barra de herramientas pero cuando salgo de ese libro no puedo volver a ejecutarla. Agradeceria tu respuesta.

Javier Marco dijo...

Gracias por tu comentario.

Lo que pides, está explicado en esta entrada, donde hablo de como compartir un macro en diferentes libros.

Saludos.

Anónimo dijo...

Hola, quisiera saber como hago para que cuando genere un reporte, este lo guarde en un libro nuevo, en una carpeta especifica y que adicional siempre quede con el mismo nombre pero que adicione al final la fecha. mil gracias

Anónimo dijo...

Me auno a los comentarios, facil, didactico y las macros explicadas asi son faciles de explorar

Sebastian dijo...

guau!

no pense que fuera tan fácil...
con estas cosas uno queda com rey...

felicitaciones y gracias!!!!

ahora seguiré profundizando....

Javier Marco dijo...

Efectivamente, con estas pequeñas cosillas, uno queda como un experto en excel :-)

Espero que disfrutes las macros. Un saludo, y gracias por tu comentario.

Hslt dijo...

Javier:

Es increible tu habilidad para crear macros, necesito tu ayuda por favor, como puedo generar una macro para que en la columna "x" de mi excel, agregue 4 columnas, 3 de ellas tome el valor de la columna "x" y separe la fecha por dd,mm,yyyy y la 4ta columna que me aparezca el mes en texto, es decir, en lugar de que enero se muestre como 01, diga asi "Ene" y asi sucesivamente. Que les ponga titulos correspondientes a cada columna. Muchas gracias!!!

Danys dijo...

Hola.
Para que sirven los siguientes signos en Excel o sea en las formulas. Mi pregunta es que hacen?
"" ( ) ; : $ # y etc...
Por favor.
Danys
Gracias

Anónimo dijo...

Hola no encuentro macro en excel 2007, es decir ni herramientas encuentro, donde esta, gracias

. dijo...

excelente tuto
gracias ¡¡¡¡

en excel 2007 ve a vista y al final de la linea encontraras macro

para lo que necesiten agrupar sus correos esta este codigo que un muy buen amigo me lo paso

Sub unir_correos()
'nos situamos en la 1ª celda con datos
Range("A1").Select
'hasta que no encuentre una celda vacía...
Do While Not IsEmpty(ActiveCell)
'que vaya añadiendo lo que encuentre, a una variable,
'y separaremos cada dato con un punto y coma
emails = emails & ";" & ActiveCell
'bajamos una fila
ActiveCell.Offset(1, 0).Select
'seguimos con el bucle
Loop
'Hacemos un arreglo, pues al principio, delante
'de la primera cuenta de correo, nos saldrá una coma
emails = Mid(emails, 2)
'escribimos el dato que necesitamos en la
'celda de abajo
ActiveCell = emails
End Sub


suerte

Javier Marco dijo...

Que casualidad, ese código que acabas de publicar es el mismo que publiqué yo la semana pasada en el foro de forosdelweb.com.

Te lo comento, porque el usuario que allí postea, con el nick de 3pies, soy yo.

El tema en cuestión era este: http://www.forosdelweb.com/f90/consulta-sobre-lista-excel-732538/

Un saludo.

Hugo y Jessy dijo...

Hola Marcos , hace una semana me paso en el excel que cuando habro un libro nuevo este se va quedando minimizado en el excel y no me lo muestra en la barra de tareas , como puedo solucionar este problema ya que trabajo con varios libros abiertos a la ves y es tedioso tener que minimizar y maximixar libros

Gracias

Javier Marco dijo...

Selecciona en la barra de menús: Ventana ---> Organizar ---> Cascada.

Anónimo dijo...

Hola me gustaría saber como hacer un macro que me traslade o copie los datos de excel a una base de datos... sería de mucha ayuda... gracias

Anónimo dijo...

HOLA
QUISIERA SABER QUE MACRO UTILIZO PARA EL SIGUIENTE CASO TENGO TABLAS DE LOS 12 MESES CON DATOS COMO COSTO PRECIO POR CLIENTE PERO NECESITO TENER UNA SOLA TABLA CON EL PROMEDIO POR CADA CLIENTE CON RELACION AL COSTO PRECIO Y DEMAS ITEMS. Y QUE PARA EL PROXIMO AÑO AL INGRESAR CADA MES SE ACTUALICE AUTOMATICAMENTE LA TABLA FINAL DEL PROMEDIO. MUCHAS GRACIAS

Anónimo dijo...

Gracias por la explicacion, man ... en cuanto tenga una duda no dudaré en ponerte otro post :D

dazu dijo...

muchas gracias por tu post, muy bueno, me funciono exelente, lo que me pasó es que las cadenas son irregulares pero solo algunas y es mejor acomodar algunas en vez de editarlas todas,

German dijo...

Excelente Blog lo felicito; tengo el siguiente problema

Tengo una serie de registros de arboles en una hoja de calculo (altura, diametro, especie).

Necesito mostrar los datos de cada fila (datos de cada uno de los arboles) en una hoja (una ficha para cada arbol). como puedo hacerlo.

GRACIAS
German tourverde@gmail.com

Anónimo dijo...

Cordial saludo,necesito ayuda en los siguiente:
tengo una celda en la hoja 1 donde se me genera un promedio y tengo una celda en la hoja 2 donde debo sumar los promedios que se me generan en la celda de la hoja uno
ejm: A1 de la hoja 1 = promedio (b3:b6)
lo valores de ese rango se modificarán. Entonces en la celda A1 de la hoja 2 necesito la suma de los promedios que se generen en A1 de la hoja 1. De ante mano muchas gracias

Cesar dijo...

NO SE COMO USAR EL EL PROGRAMA SOLVER, POR FAVOR ME PUEDE EXPLICAR SUMAMENTE FÁCIL. TENGO DOS DIAS Y ESTO DE MMAL GENIO QUE NO PUEDO MANEJAR ESTE PROGRAMA SOVER

Javier Marco dijo...

Aquí tienes un ejercicio completo, donde se explica su funcionamiento: cálculo de la tir con solver.

Te aconsejo que lo leas detenidamente, pues es bastante sencillo de usar, y de entender para qué sirve, pero lo mejor es no perder el hilo, así que tómatelo con calma leyendo.

Anónimo dijo...

Buanas tardes me gustaria me pudieses ayudar a crear una macro donde solicite informacion de alumnos, nombre, edad, direccion, etc una vez llenado los datos me pregunte si deseo seguir ingresando informacion si es si bajar a la siguiente linea y seguir ingresando si es no cerrar la macro... gracias de antemano y excelente tu trabajo para ayudar a los demas

Nico dijo...

muchas gracias, era justo lo que andaba buscando para partir xD

Anónimo dijo...

Hola, espero puedas ayudarme, mi problema es que necesito exportar de excel a un archivo txt pero no por guardar como , sino por medio de un botón que tengo en mi hoja de excel y separados los datos por comas .....de esta forma
123,9,41,2010,057,11,2234
123,9,41,2010,057,121,0

muchas gracias

Javier Marco dijo...

En este artículo tienes todo lo necesario para hacer eso: grabar datos en un fichero de texto.

Solo tienes que quitar algunas cosillas, como la de contar el largo de los caracteres, y añadir una coma.

También puedes utilizar la grabadora de macros para ver que código se genera cuando grabas el fichero en formato CSV, que precisamente lo que hace este formato, es grabarte los datos en un fichero con extensión CSV, pero separando cada celda con punto y comas. Solo tendrás que cambiarle la extensión de CSV a TXT, abrir el fichero y reemplazar los puntos y comas, por comas (abriendo el fichero de texto con el bloc de notas, esto lo podrás hacer desde "Edición" ---> "Reemplazar..."

Saludos.

Oscar dijo...

Hola Javier necesito saber que Macro puede realizar lo siguiente:

Para armar un Libro de Excel que contenga los reclamos cargados por personas en planillas individuales de cada uno, es decir; En el Libro "Reclamos totales" agregar los reclamos del día buscandolo en cada una de Libros de las personas que cargaron un reclamo con fecha de hoy. si podes ayudarme por favor, ya que es muy tedioso tener que hacerlo manualmente.
Muchas Gracias

Anónimo dijo...

hola...de antemano gracias.
me gustaria saber como hacer una macro que me permita cambiar el nombre a una hoja, el nombre estara ubicado en una cleda de otro hoja.

gracias.espero pronta respuesta.es para un trabajo

Javier Marco dijo...

Prueba esto:

Sub cambiar_nombre()
'Si hay errores, que continúe
On Error Resume Next
'le ponemos a la Hoja1 el nombre
'de la celda A1 de la Hoja2
Hoja1.Name = Hoja2.Range("A1")
End Sub

Saludos, y suerte con ese examen.

Anónimo dijo...

gracias por estar ahí.
me gustaria saber como hacer una macro que haga los siguiente:
excel 2003
tengo en una hoja excel por ejemplo 100 paginas y quiero que me las pase a PDF una a una guardandolas en una carpeta para posteriomente poder imprimirlas o mandarlas por correo electronico poniendoles el nombre a cada archivo de una o dos celdas de la hoja.
gracias y espero haberme explicado bien.

mayte2311 dijo...

Hola Javier Marco, gracias por el tutorial super facil de seguir!!!!...mi consulta es la siguiente...tengo una base de datos de clientes, ya tengo un macro que permite copiar automaticamente los datos desde la pagina master a las otras paginas (paginas por cada servicio prestado)ahora necesito un macro para definirle a los otros usuarios los rangos a completar para que estos no completen los datos de los nuevos clientes directamente en la hoja master. al mismo tiempo, este macro debe hacer rodar el macro original para que este ponga al dia la base de datos ...puedes orientarme en esto

gracias MT

Mercedes dijo...

Felicidades por tu blog y gracias por toda tu ayuda.
Tengo que hacer una macro que busque un valor en el resto de hojas del libro excel (son seis hojas) y vaya hasta el lugar donde se encuentra. ¿Puedes ayudarme? Gracias de antemano.

Javier Marco dijo...

Prueba este macro:

Sub buscando_en_todas_las_hojas()
'si hay errores que continúe
On Error Resume Next
'ocultamos el procedimiento
Application.ScreenUpdating = False
'pasamos el nombre de nuestra hoja activa a una variable
mi_hoja = ActiveSheet.Name
'preguntamos el dato a buscar
pregunta = InputBox("Introduzca el valor a buscar : ")
'buscamos en todas las hojas
For i = 1 To Worksheets.Count
'seleccionamos la hoja que toca
Worksheets(i).Select
If Not ActiveSheet.Cells.Find(pregunta, LookAt:=xlWhole) Is Nothing Then
'si existe, nos situamos en la celda
Range(ActiveSheet.Cells.Find(pregunta).Address).Select
'si existe, creamos una variable
si_esta = True
Else
'si no existe, creamos una variable
si_esta = False
End If
Next
'si no está, mostramos un mensaje, y
'volvemos a la hoja donde estábamos
If si_esta = False Then
MsgBox ("No hemos encontrado el dato que buscas.")
Sheets(mi_hoja).Select
End If
'mostramos el procedimiento
Application.ScreenUpdating = True
End Sub

Saludos.

luis manuel dijo...

como hago una macro donde cuando imprima el documento aparesca el nombre del usuario y fecha

Javier Marco dijo...

Coloca este código dentro de ThisWorkbook, no en un Módulo, sino dentro de Microsoft Excel Objetos, cuando estés en modo VBA:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
'antes de imprimir, añadimosel pie
'de página con el nombre de usuario,
'y la fecha de la impresión
With ActiveSheet.PageSetup
'ponemos a la derecha el nombre de usuario
.LeftFooter = Application.UserName
'y a la izquierda la fecha de hoy
.RightFooter = FormatDateTime(Date, 2)
End With
End Sub

Saludos

claudia diaz dijo...

Gracias Por su colaboración.

Necesito crear un boton que borre una imagen previamente involucrada por una formula, no se como hacer el codigo del boton, ya que cuando la formula no encuentra datos relacionados muestra un mensaje de texto que dice " Imagen no existente", Cuando aparezca este mensaje el usuario debe a través del boton borrar la existente y dejar el cuadro de imagen vacio.

Anónimo dijo...

Es posible crear una macro desde donde si yo pongo una cifra digamos 223.00 con numero la ponga con letra mas abajo,

Primer inento en macros

Javier Marco dijo...

Efectivamente, se puede hacer, aunque el procedimiento es largo.

Como ya está explicado en varios sitios, te pongo por ejemplo el de forosdelweb: http://www.forosdelweb.com/f90/pasar-numeros-letras-excel-347987/

Saludos.

Mercedes dijo...

Mercedes dijo...
Felicidades por tu blog y gracias por toda tu ayuda.
Tengo que hacer una macro que busque un valor en el resto de hojas del libro excel (son seis hojas) y vaya hasta el lugar donde se encuentra. ¿Puedes ayudarme? Gracias de antemano.

8 de julio de 2011 00:38
Javier Marco dijo...
Prueba este macro:

Sub buscando_en_todas_las_hojas()
'si hay errores que continúe
On Error Resume Next
'ocultamos el procedimiento
Application.ScreenUpdating = False
'pasamos el nombre de nuestra hoja activa a una variable
mi_hoja = ActiveSheet.Name
'preguntamos el dato a buscar
pregunta = InputBox("Introduzca el valor a buscar : ")
'buscamos en todas las hojas
For i = 1 To Worksheets.Count
'seleccionamos la hoja que toca
Worksheets(i).Select
If Not ActiveSheet.Cells.Find(pregunta, LookAt:=xlWhole) Is Nothing Then
'si existe, nos situamos en la celda
Range(ActiveSheet.Cells.Find(pregunta).Address).Select
'si existe, creamos una variable
si_esta = True
Else
'si no existe, creamos una variable
si_esta = False
End If
Next
'si no está, mostramos un mensaje, y
'volvemos a la hoja donde estábamos
If si_esta = False Then
MsgBox ("No hemos encontrado el dato que buscas.")
Sheets(mi_hoja).Select
End If
'mostramos el procedimiento
Application.ScreenUpdating = True
End Sub

Saludos.

8 de julio de 2011 20:38

Gracias por la macro que me enviaste, tengo un problema que no se donde indicar el nombre de las hojas donde tiene que buscar. Me podrias indicar como se hace. Perdona soy muy novata y me he comprometido ha conseguir este "buscador" pero estoy muy perdida.

Javier Marco dijo...

No hay que informar de la(s) hoja(s) donde tiene que buscar, pues el macro busca en todas las hojas del libro.

Saludos.

Mercedes dijo...

No consigo que esa macro funcione. Te explico los pasos que he dado.
He puesto la macro que me enviaste en un modulo de visual basic exactamente igual (copiar y pegar). En la primera hora del libro que se llama buscador he puesto un boton y he asociado la macro a el, asi cuando pulsas el boton se abre el cuadro para introducir el dato a buscar, que se encuentra en una de las otras hojas del libro y al colocar el dato siempre me sale el mensaje "No hemos encontrado el dato que buscas" aunque certifico que ese dato se encuentra en la hoja2 A:2. Podrias ayudarme a resolver este problema. Gracias.

Javier Marco dijo...

Disculpa Mercedes. Había un error en el código, pues no se paraba cuando encontraba la hoja con el dato, y seguía hasta el final de las hojas, cambiando el valor de la variable "si_esta" a false.

Simplemente he añadido un "Exit Sub" si encuentra el dato:

Sub buscando_en_todas_las_hojas()
'si hay errores que continúe
'On Error Resume Next
'ocultamos el procedimiento
Application.ScreenUpdating = False
'pasamos el nombre de nuestra hoja activa a una variable
mi_hoja = ActiveSheet.Name
'preguntamos el dato a buscar
pregunta = InputBox("Introduzca el valor a buscar: ")
'buscamos en todas las hojas
For i = 1 To Worksheets.Count
'seleccionamos la hoja que toca
Worksheets(i).Select
If Not ActiveSheet.Cells.Find(pregunta, LookAt:=xlWhole) Is Nothing Then
'si existe, nos situamos en la celda
Range(ActiveSheet.Cells.Find(pregunta).Address).Select
'si existe, creamos una variable
si_esta = True
Exit Sub
Else
'si no existe, creamos una variable
si_esta = False
End If
Next
'si no está, mostramos un mensaje, y
'volvemos a la hoja donde estábamos
If si_esta = False Then
MsgBox ("No hemos encontrado el dato que buscas.")
Sheets(mi_hoja).Select
End If
'mostramos el procedimiento
Application.ScreenUpdating = True
End Sub

Colócalo en un módulo, y no en una hoja.

Un saludo.

Mercedes dijo...

Ahora si funciona. Gracias!!!!

Se puede poder algun comando para no tenga que ser el dato el exacto. El dato a introducir son matriculas de vehiculos pero a veces solo conocemos parte, generalmente el numero pero no las letras.

Javier Marco dijo...

Hay una línea en el código donde aparece esto:

LookAt:=xlWhole

Sustitye eso por esto otro, y tendrás el tema solucionado:

LookAt:=xlPart

Saludos.

Mercedes dijo...

Muchisimas gracias!!!

hslt dijo...

Javier: necesito de tu super ayuda, tendras una macro para word? mira, necesito que de un archivo de word 2007 que tiene mas de 200 hojas, se divida en archivos, es decir, un archivo por hoja y que al mismo tiempo me la convierta a pdf, se podra?? espero tu respuesta, mil gracias!!!

Anónimo dijo...

"Como podría crear una macro donde por cada cambio en alguna columna me seleccione los datos que estan visibles hasta la columna X" tengo este código Sub Macro1()
Dim hpbrk As HPageBreak
Dim rngCol As Range
Dim valor As Range
On Error Resume Next
For Each hpbrk In ActiveWindow.SelectedSheets.HPageBreaks
hpbrk.Delete
Next hpbrk
Set rngCol = ActiveSheet.Range("b2:b" & Cells(Rows.Count, "b").End(xlUp))

Do
Set valor = rngCol(1)

Set rngCol = rngCol.ColumnDifferences(Comparison:=valor)
rngCol.Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
Loop Until valor = rngCol(1)
End Sub

pero bueno ese sólo selecciona la columna b no de la b hasta la columna X(la que este visible con los datos) gracias.

Alex dijo...

Hola, Javier agradezco toda la información que nos proporcionas en tu blog. Es el mejor sitio de Excel.
Me gustaría hacer te una consulta.

Tengo un documento en el cual recopila información de otros listados ejemplo:
1. Cantidad de prospectos.
2. Prospectos Trabajados etc.

Como son alrededor de 20 listados diferentes. Lo que hice fue una tabla de pivote o tabla dinamica en cada lista para obtener la información para que al final del mes solo me envíen esos datos y así poder actualizar mi documento final. Además hice una hoja adicional en mi documento final, en el cual voy pegando las tablas dinámicas y con una macro asociada a un botón en la hoja principal actualiza la información.

Mi inquietud es si entra otro listado mi macro ya no me sirve porque todo los rangos se mueven al agregar una fila adicional. Me podrías ayudar con esto por favor?

Y mi otra inquietud es saber si conoces una forma mas facil de poder hacer esto.

Gradezco mucho tu ayuda, Saludos.
Nota: Utilizo Excel 2007.

Javier Marco dijo...

Una solución puede ser la siguiente: Si crece el tamaño del rango, simplemente ponle un nombre al mismo, de tal forma que cada vez que lo llames, calcule hasta donde hay datos contínuos. Por ejemplo el rando "datos" puede ocupar de A1 a A10, pero si añades más información, ese rango llamado "datos" ocupará hasta A11, hasta A25, o hasta la última fila con datos.

Pásate por este artículo: validación con datos en otra hoja, donde podrás ver el uso de los nombres en las celdas, y si te descargas la aplicación por ejemplo, para controlar vencimientos de facturas y recibos, verás que hay muchos rangos de datos dinánimos que tienen nombre, que van creciendo al ampliarse la información que se añade fila a fila. Esto lo puedes ver por ejemplo en las formas de pago.

Un saludo.

Alex dijo...

Gracias por tu pronta respuesta, pondré en practica tu consejo.

Saludos.

Angel dijo...

Buenas Tardes, Me gustaria hacerte una consulta estoy tratando de capturar una encuesta, pero que tambien se vaya haciendo su grafica, me hicieron la sugerencia de poner una macro en un boton en cada respuesta de la encuesta para ir registrando cada una de ellas, y mi pregunta es como puedo hacer esa macro.

Agradecere tu ayuda y de antemano muchas gracias!!!

ALBERTO CONTRERAS dijo...

Buenas tardes Javier. Soy casi que un neofito en esto de Excel, le comento cual es mi necesidad.
En una hoja tengo muchas cifras; lo que necesito es que excel Busque los valores iguales o mayores a determinada cifra y los reemplace por un determinado valor. ¿necesitare una macro? Si es así, grave, porque yo de eso, nada. Existe alguna otra opción en Excel. GRacias Javier

Javier Marco dijo...

Pues efectivamente, Alberto. Necesitarás hacer uso de un macro. Si solo fuera sustituir un valor determinado por otro, entonces no haría falta, pero introduces la variable de que sea mayor que determinado valor. En ese caso, creo que es necesario el uso de un macro.

Si no sabes nada de macros, te sugiero que te pases por el subforo de ofimática de forosdelweb, y plantees la cuestión allí: http://www.forosdelweb.com/f90

Saludos.

Anónimo dijo...

Hola!! a ver si alguien puede ayudarme. Tengo una hoja de excel y necesito imprimir 2 columnas, pero que me pida que fila quiero imprimir y la cantidad de copias. Ademas necesito que me imprima en una sola hoja, ya que quiero imprimir en etiquetas. Gracias de antemano. Saludos

Anónimo dijo...

hola, quisiera pedirte apoyo, necesito generar un listado de otro que tiene muchos nombres repetidos y que continuamente le estoy aumentando nombres, necesito que en otra columna me vaya poniendo en automático un listado con los nombres sin que se repitan según se vaya aumentando la primera lista

Anónimo dijo...

hola quiero hacer una macro para que me de partidos de futbol americano juvenil, como puedo hacer la formula para que me de primer lugar de acuerdo a los puntos, mil gracias