Tabla de contenido
En este tutorial, aprenderá cómo crear un rango dinámico con nombre en Excel y cómo utilizarlo en fórmulas para que los nuevos datos se incluyan en los cálculos automáticamente.
En el tutorial de la semana pasada, vimos diferentes formas de definir un rango con nombre estático en Excel. Un nombre estático siempre hace referencia a las mismas celdas, lo que significa que tendría que actualizar la referencia del rango manualmente cada vez que añada nuevos datos o elimine los existentes.
Si está trabajando con un conjunto de datos que cambia continuamente, es posible que desee hacer que su rango con nombre sea dinámico, de modo que se amplíe automáticamente para dar cabida a las nuevas entradas añadidas o se contraiga para excluir los datos eliminados. Más adelante en este tutorial, encontrará una guía detallada paso a paso sobre cómo hacerlo.
Cómo crear un rango dinámico con nombre en Excel
Para empezar, vamos a construir un rango dinámico con nombre que conste de una sola columna y un número variable de filas. Para tenerlo hecho, realiza estos pasos:
- En el Fórmula en la pestaña Nombres definidos grupo, haga clic en Definir nombre O bien, pulse Ctrl + F3 para abrir el Administrador de nombres de Excel y haga clic en el botón Nuevo... botón.
- En cualquier caso, el Nuevo nombre se abrirá un cuadro de diálogo en el que podrá especificar los siguientes datos:
- En el Nombre escriba el nombre de su rango dinámico.
- En el Alcance establece el ámbito del nombre. Cuaderno de trabajo (por defecto) se recomienda en la mayoría de los casos.
- En el Se refiere a introduzca la fórmula OFFSET COUNTA o INDEX COUNTA.
- Haz clic en OK. ¡Listo!
En la siguiente captura de pantalla, definimos un rango dinámico denominado artículos que da cabida a todos celdas con datos en la columna A, excepto en la fila de cabecera:
Fórmula OFFSET para definir un rango dinámico con nombre en Excel
La fórmula genérica para hacer un rango dinámico con nombre en Excel es la siguiente:
OFFSET( primera_celda , 0, 0, COUNTA( columna ), 1)Dónde:
- primera_celda - el primer elemento que se incluirá en el rango nombrado, por ejemplo $A$2.
- columna - una referencia absoluta a la columna como $A:$A.
En el núcleo de esta fórmula, se utiliza la función COUNTA para obtener el número de celdas que no están en blanco en la columna de interés. Ese número va directamente a la función altura de la función OFFSET(reference, rows, cols, [height], [width]) que le indica cuántas filas debe devolver.
Más allá de eso, es una fórmula Offset ordinaria, donde:
- referencia es el punto de partida a partir del cual se basa el desplazamiento (primera_celda).
- filas y cols son ambos 0, ya que no hay columnas ni filas que compensar.
- anchura es igual a 1 columna.
Por ejemplo, para construir un rango dinámico con nombre para la columna A en la Hoja3, comenzando en la celda A2, utilizamos esta fórmula:
=OFFSET(Hoja3!$A$2, 0, 0, COUNTA(Hoja3!$A:$A), 1)
Nota. Si está definiendo un rango dinámico en la hoja de cálculo actual, no necesita incluir el nombre de la hoja en las referencias, Excel lo hará por usted automáticamente. Si está construyendo un rango para alguna otra hoja, anteponga a la referencia de la celda o rango el nombre de la hoja seguido del signo de exclamación (como en el ejemplo de fórmula anterior).
Fórmula INDEX para hacer un rango dinámico con nombre en Excel
Otra forma de crear un rango dinámico en Excel es utilizando COUNTA en combinación con la función INDEX.
primera_celda :INDEX( columna COUNTA( columna ))Esta fórmula consta de dos partes:
- A la izquierda del operador de rango (:), se pone la referencia inicial codificada como $A$2.
- En el lado derecho, se utiliza la función INDEX(array, row_num, [column_num]) para averiguar la referencia final. En este caso, se suministra toda la columna A para el array y se utiliza COUNTA para obtener el número de fila (es decir, el número de celdas sin entrada en la columna A).
Para nuestro conjunto de datos de ejemplo (véase la captura de pantalla anterior), la fórmula es la siguiente:
=$A$2:INDEX($A:$A, COUNTA($A:$A))
Como hay 5 celdas no en blanco en la columna A, incluyendo una cabecera de columna, COUNTA devuelve 5. En consecuencia, INDEX devuelve $A$5, que es la última celda utilizada en la columna A (normalmente una fórmula de índice devuelve un valor, pero el operador de referencia le obliga a devolver una referencia). Y como hemos establecido $A$2 como punto de partida, el resultado final de la fórmula es el rango $A$2:$A$5.
Para probar el rango dinámico recién creado, puede hacer que COUNTA obtenga el recuento de elementos:
=COUNTA(Artículos)
Si todo se hace correctamente, el resultado de la fórmula cambiará cuando añada o elimine elementos de la lista:
Nota: Las dos fórmulas anteriores producen el mismo resultado, sin embargo, hay una diferencia de rendimiento que debe tener en cuenta. OFFSET es una función volátil que se recalcula con cada cambio en una hoja. En máquinas modernas potentes y conjuntos de datos de tamaño razonable, esto no debería ser un problema. En máquinas de baja capacidad y grandes conjuntos de datos, esto puede ralentizar su Excel. En ese caso, deberíamejor utilizar la fórmula ÍNDICE para crear un rango dinámico con nombre.
Cómo hacer rango dinámico bidimensional en Excel
Para construir un rango bidimensional con nombre, donde no sólo el número de filas sino también el número de columnas es dinámico, utilice la siguiente modificación de la fórmula INDEX COUNTA:
primera_celda :INDEX($1:$1048576, COUNTA( primera_columna ), COUNTA( primera_fila )))En esta fórmula, tiene dos funciones COUNTA para obtener la última fila no vacía y la última columna no vacía ( número_de_fila y columna_num de la función INDEX, respectivamente). En la función matriz se alimenta toda la hoja de cálculo (1048576 filas en Excel 2016 - 2007; 65535 filas en Excel 2003 e inferiores).
Y ahora, definamos un rango dinámico más para nuestro conjunto de datos: el rango denominado ventas que incluye las cifras de ventas de 3 meses (de enero a marzo) y se ajusta automáticamente a medida que se añaden nuevos artículos (filas) o meses (columnas) a la tabla.
Con los datos de ventas comenzando en la columna B, fila 2, la fórmula toma la siguiente forma:
=$B$2:INDEX($1:$1048576,COUNTA($B:$B),COUNTA($2:$2))
Para asegurarte de que tu rango dinámico funciona como debe, introduce las siguientes fórmulas en algún lugar de la hoja:
=SUMA(ventas)
=SUMA(B2:D5)
Como puedes ver en la captura de pantalla inferior, ambas fórmulas devuelven el mismo total. La diferencia se revela en el momento en que añades nuevas entradas a la tabla: la primera fórmula (con el rango de nombre dinámico) se actualizará automáticamente, mientras que la segunda tendrá que actualizarse manualmente con cada cambio. Esto supone una gran diferencia, ¿verdad?
Cómo utilizar rangos dinámicos con nombre en las fórmulas de Excel
En las secciones anteriores de este tutorial, ya has visto un par de fórmulas sencillas que utilizan rangos dinámicos. Ahora, vamos a intentar idear algo más significativo que muestre el valor real de un rango dinámico con nombre de Excel.
Para este ejemplo, vamos a tomar la fórmula clásica INDEX MATCH que realiza Vlookup en Excel:
ÍNDICE ( rango_de_retorno , MATCH ( buscar_valor , buscar_rango , 0))...y ver cómo podemos hacer que la fórmula sea aún más potente con el uso de rangos dinámicos con nombre.
Como se muestra en la captura de pantalla anterior, estamos intentando crear un cuadro de mandos en el que el usuario introduzca el nombre de un artículo en H1 y obtenga el total de ventas de ese artículo en H2. Nuestra tabla de ejemplo creada con fines de demostración contiene sólo 4 artículos, pero en las hojas de la vida real puede haber cientos e incluso miles de filas. Además, pueden añadirse nuevos artículos a diario, por lo que el uso de referencias no es una solución.porque tendrías que actualizar la fórmula una y otra vez. ¡Soy demasiado vago para eso! :)
Para forzar que la fórmula se expanda automáticamente, vamos a definir 3 nombres: 2 rangos dinámicos y 1 celda con nombre estático:
Lookup_range: =$A$2:INDEX($A:$A, COUNTA($A:$A))
Rango_de_retorno: =$E$2:INDEX($E:$E, COUNTA($E:$E))
Lookup_value: =$H$1
Nota: Excel añadirá el nombre de la hoja actual a todas las referencias, así que antes de crear los nombres asegúrese de abrir la hoja con sus datos de origen.
Ahora, empieza a escribir la fórmula en H1. Cuando llegue al primer argumento, escribe unos cuantos caracteres del nombre que quieras usar, y Excel mostrará todos los nombres coincidentes disponibles. Haz doble clic en el nombre apropiado, y Excel lo insertará en la fórmula inmediatamente:
La fórmula completa tiene el siguiente aspecto:
=INDEX(Rango_de_retorno, MATCH(Valor_de_consulta, Rango_de_consulta, 0))
¡Y funciona perfectamente!
En cuanto añada nuevos registros a la tabla, se incluirán de inmediato en sus cálculos, ¡sin que tenga que hacer ni un solo cambio en la fórmula! Y si alguna vez necesita trasladar la fórmula a otro archivo de Excel, sólo tiene que crear los mismos nombres en el libro de destino, copiar/pegar la fórmula y empezar a trabajar de inmediato.
Sugerencia: además de hacer que las fórmulas sean más duraderas, los rangos dinámicos resultan útiles para crear listas desplegables dinámicas.
Así es como se crean y utilizan los rangos dinámicos con nombre en Excel. Para ver más de cerca las fórmulas discutidas en este tutorial, le invitamos a descargar nuestro libro de ejemplo de Excel de rangos dinámicos con nombre. Le agradezco su lectura y ¡espero verle en nuestro blog la próxima semana!