Use nombres de rango dinámico en Excel para menores flexibles - 3 - diciembre 23, 2022

Use nombres de rango dinámico en Excel para menores flexibles

Las hojas de cálculo de Excel a menudo incluyen menús desplegables de celdas para simplificar y/o estandarizar la entrada de datos. Estos menús desplegables se crean mediante la función de validación de datos para especificar una lista de entradas permitidas.

Para configurar una lista desplegable simple, seleccione la celda donde se ingresarán los datos, luego haga clic en Validación de datos (en la pestaña Datos), seleccione Validación de datos, elija Lista (en Permitir:) y luego ingrese los elementos de la lista (separados por comas). ) en el campo Fuente: (ver Figura 1).

Use nombres de rango dinámico en Excel para menores flexibles - 5 - diciembre 23, 2022

En este tipo de menú desplegable básico, la lista de entradas permitidas se especifica dentro de la propia validación de datos; por lo tanto, para realizar cambios en la lista, el usuario debe abrir y editar la validación de datos. Sin embargo, esto puede ser difícil para usuarios sin experiencia o en casos en los que la lista de opciones es larga.

Otra opción es colocar la lista en un rango con nombre dentro de la hoja de cálculo y luego especificar ese nombre de rango (precedido por un signo igual) en el campo Fuente: de la validación de datos (como se muestra en la Figura 2).

Use nombres de rango dinámico en Excel para menores flexibles - 7 - diciembre 23, 2022

Este segundo método facilita la edición de las opciones en la lista, pero agregar o eliminar elementos puede ser problemático. Dado que el rango con nombre (FruitChoices, en nuestro ejemplo) se refiere a un rango fijo de celdas ($H$3:$H$10 como se muestra), si se agregan más opciones a las celdas H11 o inferiores, no aparecerán en el menú desplegable (ya que esas celdas no forman parte de la gama FruitChoices).

Del mismo modo, si, por ejemplo, se borran las entradas de Peras y Fresas, ya no aparecerán en el menú desplegable, sino que el menú desplegable incluirá dos opciones vacías, ya que el menú desplegable todavía hace referencia a todo el rango de FruitChoices, incluidas las celdas vacías H9 y H10.

Por estas razones, cuando se usa un rango con nombre normal como fuente de lista para un menú desplegable, el rango con nombre en sí debe editarse para incluir más o menos celdas si se agregan o eliminan entradas de la lista.

Una solución a este problema es usar un nombre de rango Dinámico como fuente para las opciones desplegables. Un nombre de rango dinámico es uno que se expande (o contrae) automáticamente para coincidir exactamente con el tamaño de un bloque de datos a medida que se agregan o eliminan entradas. Para hacer esto, usa una fórmula, en lugar de un rango fijo de direcciones de celda, para definir el rango con nombre.

¿Cómo configurar un rango dinámico en Excel?

Un nombre de rango normal (estático) se refiere a un rango específico de celdas ($H$3:$H$10 en nuestro ejemplo, ver más abajo):

Use nombres de rango dinámico en Excel para menores flexibles - 9 - diciembre 23, 2022

Pero un rango dinámico se define usando una fórmula (ver más abajo, tomada de una hoja de cálculo separada que usa nombres de rango dinámico):

Use nombres de rango dinámico en Excel para menores flexibles - 11 - diciembre 23, 2022

Antes de comenzar, asegúrese de descargar nuestro archivo de ejemplo de Excel (las macros de clasificación se han deshabilitado).

Examinemos esta fórmula en detalle. Las opciones para Frutas están en un bloque de celdas directamente debajo de un encabezado (FRUTAS). A ese encabezado también se le asigna un nombre: FruitsHeading :

Use nombres de rango dinámico en Excel para menores flexibles - 13 - diciembre 23, 2022

La fórmula completa utilizada para definir el rango dinámico para las opciones de Frutas es:

 =DESPLAZAR(FrutasTítulo,1,0,SI.ERROR(COINCIDIR(VERDADERO,ÍNDICE(ESTÁ EN BLANCO(DESPLAZAR(FrutasTítulo,1,0,20,1)),0,0),0)-1,20),1)

FruitsHeading se refiere al encabezado que está una fila arriba de la primera entrada en la lista. El número 20 (usado dos veces en la fórmula) es el tamaño máximo (número de filas) para la lista (esto se puede ajustar como se desee).

Tenga en cuenta que en este ejemplo, solo hay 8 entradas en la lista, pero también hay celdas vacías debajo de estas donde se pueden agregar entradas adicionales. El número 20 se refiere a todo el bloque donde se pueden realizar entradas, no al número real de entradas.

Ahora dividamos la fórmula en partes (codificando con colores cada parte) para comprender cómo funciona:

 =DESPLAZAR(FrutasTítulo,1,0,SI.ERROR(COINCIDIR(VERDADERO,ÍNDICE(ESTÁ EN BLANCO(DESPLAZAR(FrutasTítulo,1,0,20,1) ),0,0),0)-1,20),1)

La pieza más interna es OFFSET(FruitsHeading,1,0,20,1) . Esto hace referencia al bloque de 20 celdas (debajo de la celda FruitsHeading) donde se pueden ingresar opciones. Esta función de DESPLAZAMIENTO básicamente dice: Comience en la celda FruitsHeading, baje 1 fila y sobre 0 columnas, luego seleccione un área que tenga 20 filas de largo y 1 columna de ancho. Eso nos da el bloque de 20 filas donde se ingresan las opciones de Frutas.

La siguiente pieza de la fórmula es la función ISBLANK:

 =DESPLAZAR(FrutasEncabezado,1,0,SI.ERROR(COINCIDIR(VERDADERO,ÍNDICE(ESBLANCO(lo anterior),0,0),0)-1,20),1)

Aquí, la función OFFSET (explicada anteriormente) ha sido reemplazada por la anterior (para facilitar la lectura). Pero la función ISBLANK está operando en el rango de celdas de 20 filas que define la función OFFSET.

ISBLANK luego crea un conjunto de 20 valores VERDADERO y FALSO, lo que indica si cada una de las celdas individuales en el rango de 20 filas al que hace referencia la función OFFSET está en blanco (vacío) o no. En este ejemplo, los primeros 8 valores del conjunto serán FALSO ya que las primeras 8 celdas no están vacías y los últimos 12 valores serán VERDADERO.

La siguiente pieza de la fórmula es la función ÍNDICE:

 =DESPLAZAR(FrutasEncabezado,1,0,SI.ERROR(COINCIDIR(VERDADERO, ÍNDICE(lo anterior,0,0) ,0)-1,20),1)

Nuevamente, lo anterior se refiere a las funciones ISBLANK y OFFSET descritas anteriormente. La función ÍNDICE devuelve una matriz que contiene los 20 valores VERDADERO/FALSO creados por la función ESBLANCO.

Índice se usa normalmente para elegir un determinado valor (o rango de valores) de un bloque de datos, especificando una determinada fila y columna (dentro de ese bloque). Pero establecer las entradas de fila y columna en cero (como se hace aquí) hace que ÍNDICE devuelva una matriz que contiene todo el bloque de datos.

La siguiente pieza de la fórmula es la función MATCH:

 =DESPLAZAR(FrutasEncabezado,1,0,SI.ERROR(COINCIDIR(VERDADERO,lo anterior,0)-1,20),1)

La función COINCIDIR devuelve la posición del primer valor VERDADERO, dentro de la matriz que devuelve la función ÍNDICE. Dado que las primeras 8 entradas de la lista no están en blanco, los primeros 8 valores de la matriz serán FALSO y el noveno valor será VERDADERO (ya que la novena fila del rango está vacía).

Entonces la función MATCH devolverá el valor de 9 . En este caso, sin embargo, realmente queremos saber cuántas entradas hay en la lista, por lo que la fórmula resta 1 del valor COINCIDIR (que da la posición de la última entrada). Entonces, en última instancia, MATCH(TRUE,the above,0)-1 devuelve el valor de 8 .

La siguiente pieza de la fórmula es la función IFERROR:

 =DESPLAZAR(FrutasEncabezado,1,0, SI.ERROR(lo anterior,20),1)

La función IFERROR devuelve un valor alternativo, si el primer valor especificado da como resultado un error. Esta función se incluye porque, si todo el bloque de celdas (las 20 filas) están llenos de entradas, la función COINCIDIR devolverá un error.

Esto se debe a que le estamos diciendo a la función coincidir que busque el primer valor verdadero (en la matriz de valores de la función es en blanco), pero si ninguna de las celdas está vacía, toda la matriz se llenará con valores falso. Si match no puede encontrar el valor objetivo (VERDADERO) en la matriz que está buscando, devuelve un error.

Entonces, si toda la lista está llena (y por lo tanto, COINCIDIR devuelve un error), la función SI.ERROR devolverá el valor de 20 (sabiendo que debe haber 20 entradas en la lista).

Finalmente, OFFSET(FruitsHeading,1,0,the above,1) devuelve el rango que realmente estamos buscando: Comience en la celda FruitsHeading, baje 1 fila y más de 0 columnas, luego seleccione un área que tenga tantas filas como hay entradas en la lista (y 1 columna de ancho). Entonces, la fórmula completa devolverá el rango que contiene solo las entradas reales (hasta la primera celda vacía).

El uso de esta fórmula para definir el rango que es la fuente del menú desplegable significa que puede editar libremente la lista (agregar o eliminar entradas, siempre que las entradas restantes comiencen en la celda superior y sean contiguas) y el menú desplegable siempre reflejará el actual lista (ver Figura 6).

Use nombres de rango dinámico en Excel para menores flexibles - 15 - diciembre 23, 2022

El archivo de ejemplo (Listas dinámicas) que se ha utilizado aquí está incluido y se puede descargar desde este sitio web. Sin embargo, las macros no funcionan porque a WordPress no le gustan los libros de Excel con macros.

Como alternativa a especificar el número de filas en el bloque de lista, se puede asignar al bloque de lista su propio nombre de rango, que luego se puede usar en una fórmula modificada. En el archivo de ejemplo, una segunda lista (Nombres) usa este método. Aquí, al bloque de lista completo (debajo del encabezado NOMBRES, 40 filas en el archivo de ejemplo) se le asigna el nombre de rango de NameBlock . La fórmula alternativa para definir NamesList es entonces:

 =DESPLAZAR(NombresEncabezado,1,0,SI.ERROR(COINCIDIR(VERDADERO,ÍNDICE(ESBLANCO(BloqueNombres),0,0),0)-1, FILAS(BloqueNombres),1)

Donde NamesBlock reemplaza OFFSET(FruitsHeading,1,0,20,1) y ROWS(NamesBlock) reemplaza el 20 (número de filas) en la fórmula anterior.

Por lo tanto, para las listas desplegables que se pueden editar fácilmente (incluso por otros usuarios que pueden no tener experiencia), intente usar nombres de rango dinámico. Y tenga en cuenta que, aunque este artículo se ha centrado en las listas desplegables, los nombres de los rangos dinámicos se pueden usar en cualquier lugar donde necesite hacer referencia a un rango o una lista que puede variar en tamaño. ¡Disfrutar!