41 formas de hacer referencia y seleccionar celdas en Excel
Una de las primeras tareas que he enseñado en mis cursos presenciales ha sido a seleccionar celdas. Antes de nada, he de decirte que, para trabajar con celdas, no es necesario seleccionarlas, pero los que te muestro ahora te servirán para entender cómo funciona la selección de objetos.
Hacer referencia a una celda (seleccionándola o no) te permitirá trabajar cambiar sus propiedades o ejecutar métodos
1. Cómo hacer referencia a todas las hojas del libro activo
ActiveWorkbook.Sheets.Select
2. Cómo hacer referencia a la hoja “Presupuestos”
Sheets("Presupuestos").Select
3. Cómo hacer referencia a la hoja que se encuentra en la tercera posición sin importar el nombre
Sheets(2).Select
4. Cómo hacer referencia a la hoja anterior a la hoja activa
ActiveSheet.Previous.Select
5. Cómo hacer referencia a la hoja siguiente a la activa
ActiveSheet.Next.Select
6. Cómo hacer referencia a una celda de otro libro
Application.Goto Workbooks("Libro1.xlsm").Sheets("Hoja1").Cells(5, 3)
7. Cómo hacer referencia a una hoja grabando previamente el nombre en una variable
Dim NombreHoja As String NombreHoja = ActiveSheet.Name
8. Cómo hacer referencia a las hojas anterior y posterior a la activa utilizando una variable
NombreHoja = ActiveSheet.Previous.Name NombreHoja = ActiveSheet.Next.Name
9. Cómo hacer referencia a los índices de las hojas anterior y posterior a la activa
Dim IndiceHoja As Byte IndiceHoja = ActiveSheet.Index ‘ Hoja activa IndiceHoja = ActiveSheet.Previous.Index ‘ Hoja anterior IndiceHoja = ActiveSheet.Next.Index ‘ Hoja posterior
10. Cómo seleccionar la celda C6 de la Hoja 2
Sheets("hoja2").Range("C6").Select
11. Otra forma de seleccionar la celda C6
Sheets("Hoja2").Cells(6, 3).Select
12. Otra forma más de seleccionar la celda C6
Sheets(“Hoja2”).[C6].Select
13. Cómo seleccionar el rango de celdas de A1 a B8
Range("A1:B8").Select
14. Otra forma de seleccionar el rango de celdas de A1 a B8
Range(Cells(1, 1), Cells(8, 2)).Select
15. Otra forma más de seleccionarel rango de A1 a B8
Range("A1", "B8").Select
16. Cómo seleccionar toda la columna C
Range("C:C").Select
17. Cómo seleccionar todas las celdas de las columnas desde la A hasta la D
Range("A:D").Select
18. Cómo seleccionar todas las celdas de la fila 6
Range("6:6").Select
19. Cómo seleccionar todas las celdas desde la fila 2 a la fila 6
Range("2:6").Select
20. Cómo seleccionar dos o más rangos a la vez (similar a utilizar la tecla Ctrl).
Application.Union(Range("A3: C8"), Range("F3: H19")).Select
21. Cómo seleccionar dos o más columnas no contiguas de longitud variable
Set a = Range("A1", Range("A1").End(xlDown)) Set b = Range("E1", Range("E1").End(xlDown)) Union(a, b).Select
22. Cómo aumentar un rango dado en 7 columnas y 6 filas y seleccionarlo
Range("D10").Resize(7, 6).Select
23. Cómo seleccionar un rango mayor al actual estableciendo la cantidad de filas y columnas a agregar
Range("C2:D10").Select Selection.Resize(Selection.Rows.Count + 5, Selection.Columns.Count + 4).Select
24. Cómo seleccionar desde la celda A1 hasta la última celda con datos hacia abajo (igual que seleccionar la celda A1 y pulsar Ctrl+Mayús+Flecha abajo)
Range("A1", Range("A1").End(xlDown)).Select
25. Otra forma de hacer la selección anterior
Range("A1:" & Range("A1").End(xlDown).Address).Select
26. Cómo seleccionar desde la celda A5 hasta la última celda con datos hacia la derecha (igual que pulsar Ctrl+Mayús+Flecha derecha)
Range("A5", Range("A5").End(xlToRight)).Select
27. Otra forma de hacer la selección anterior
Range("A5:" & Range("A5").End(xlToRight).Address).Select
28. Cómo seleccionar desde la celda H10 hasta la última celda con datos hacia la izquierda (igual que pulsar Ctrl+Mayús+Flecha izquierda)
Range("H10", Range("H10").End(xlToLeft)).Select
29. Otra forma de hacer la selección anterior
Range("H10:" & Range("H10").End(xlToLeft).Address).Select
30. Seleccionar desde la celda H10 hasta la última celda con datos hacia arriba (igual que pulsar Ctrl+Mayús+Flecha arriba)
Range("H10", Range("H1048576").End(xlUp)).Select
31. Otra forma de hacer la selección anterior
Range("H10:" & Range("H1048576").End(xlUp).Address).Select
32. Cómo seleccionar con variables y Cells un rango hacia la derecha
Sheets("Previsiones").Range((Cells(Resultado, 1)), Range((Cells(Resultado, 1)), Cells(Resultado, 1)).End(xlToRight)).Select
33. Cómo seleccionar la última celda con datos
ActiveSheet.Range("B1").End(xlDown).Offset(1, 0).Select
34. Cómo seleccionar la última columna con datos
ActiveSheet.Range("B1").End(xlDown).Offset(0, 1).Select
35. Cómo hacer referencia a la dirección de la última celda con datos hacia abajo
Direcc = Selection.Cells(1, 1).Address
36. Cómo hacer referencia al número de la última fila con datos
UltimaFila = Range("A1").End(xlDown).Row
37. Cómo hacer referencia al número de la última columna con datos
UltimaColumna = Range("A1").End(xl ToRight).Column
38. Cómo seleccionar y combiar combinar las celdas seleccionadas
Range("B1:E1").Select Selection.Merge
39. Cómo seleccionar y descombinar las celdas seleccionadas
Range("B1:E1").Select Selection.UnMerge
40. Cómo seleccionar el rango complete donde se encuentra la celda activa
ActiveCell.CurrentRegion.Select
41. Cómo seleccionar la última celda con datos sin importar si hay celdas vacías en medio
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
En la mayoría de las ocasiones, elegir una forma u otra de seleccionar celdas con VBA va a depender exclusivamente de tus gustos personales. Otras veces el contexto de la programación te irá diciendo cuál debes utilizar.
Por favor, comparte el artículo si te ha gustado.
Excelente ejercicio.
Gracias por compartirlo
será de gran utilidad.
Saludos.
Danilo
Maravilloso!! Que gran aporte Sergio ! Muchas gracias
Gracias Sergio por compartir tus conocimientos, le doy un Like
Gracias Sergio me ha sido de mucha ayuda,te quiero pedir un favor soy agente de seguros y algunas polizas se vencen cada mes, otras cada tres meses como hago para llevar ese control de vencimientos. Gracias
Hola, Norma. Entra en el foro de Ayuda Excel y plantea ahí tu duda. Te ayudaré con tus vencimientos.
hola sergio, primero gracia por compartir tus conocimientos, disfruto todos tus gaps. deseo consultar si esposible.Tengo una plantilla excel, con las hojas nombradas por los meses y año, es decir “Enero 2010″…”Dic 2010”, como no quiero volver a renombrar todas las hojas una por una manualmente, con el año siguiente “Enero 2011″…”Dic 2011”: ¿comó automarizo el renombrar todas las hojas de la plantilla, de una sola vez?
se entiende verdas??
Gracias
Echa un vistazo al siguiente enlace donde se explica perfectamente cómo hacerlo con una macro:
http://jldexcelsp.blogspot.com.es/2008/03/generar-hojas-con-nombre-partir-de-una.html
Excelenteeee
excelentes formas aprender, sobre todo con lo didactico que eres.
Muy bueno
Hola
¿Se podrá poner en la celda C1 una formula que escriba en B1 el contenido de la celda A1?
Sucede que en la columna B puedo necesitar agregar datos directos en caso que A1 no no contenga ningún dato pero no quiero perder la formula por eso no quiero poner la formula directo en B1. No se si me explico.
Gracias
Valentino, tal como lo propones, no se puede. Debes escribir la fórmula en la misma celda en la que quieras que aparezca el resultado. Sólo se me ocurre que escribas en B1 una fórmula condicional (y la arrastres hacia abajo) que escriba el valor de A1. Si necesitas escribir en la columna B, simplemente sustituye la fórmula por el valor. La fórmula no la perderás porque ya la has copiado en las celdas de abajo.
hola que tal, excelente, muy buena la aportacion nos ayudaste muchisimo. Yo tengo una pregunta, se como se podra hacer esto mismo pero con otro archivo (sin que este compartido, ya que contiene macros y no se pueden estos) y ademas este archivo estara abierto. Solo deseo consultar un rango de una hoja y mostrarla en otro archivo nuevo o existente. mil gracias por la atencion.
Btosmix, simplemente escribe el signo igual y a continuación haces clic en la celda del libro que quieras vincular.
hola, yo quisiera saber (si es posible) como ver el contenido de una celda a través del resultado de una operación.
intentare explicarme, yo se que tengo organizados unos datos en bloques de 20 filas y el dato que me interesa esta en la columna L fila 20 de cada bloque, si pongo en num de bloque y lo multiplico por 20 sabria exactamente en que posición tengo los datos, ¿ pero como muestro su contenido?
Julián, utiliza la función DESREF para ello. Si necesitas auxiliarte de otra función para encontrar la ubicación, usa INDIRECTO. Espero haberte ayudado.
Genial!! Muchísimas gracias.
Hola, gracias por compartir tu conocimiento, a sido de gran ayuda. Quiero compartir con todos una solución que me tomo un poco de tiempo encontrar:
Supongamos que es necesario seleccionar una fila completa, como en el punto 18. Pero esta selección es en forma dinámica, o sea, se tiene que pasar el numero que identifica dicha fila.
Estas son tres posibles soluciones:
1)_La Rebuscada
Dim t As String ‘Cadena que contendrá el numero de la fila.
Dim n As Integer ‘ Variable que contiene el numero de fila.
n = 6
t = n & “:” & n
Range(t).Select
2)_La Adecuada
n = 6
Rows(n).Select
3)_La misma que la anterior, pero explicita.
n = 6
Rows(n).EntireRow.Select
Espero haber sido de ayuda.
Que bueno! lástima de no haber leido estas ayudas antes de haber estado cientos de horas haciendo macros con soluciones mucho menos elegantes
🙂
gracias