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


Las hojas de cálculo de Excel a menudo incluyen listas desplegables de celdas para simplificar y / o estandarizar la entrada de datos. Estas listas desplegables se crean utilizando 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 Fuente: campo (ver Figura 1).

En este tipo de menú desplegable básico, se especifica la lista de entradas permitidas dentro de la validación de datos en sí; 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 donde 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).

En_contenido_1 todo: [300x250] / dfp: [640x360]->

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 se mostrarán en el menú desplegable (dado que esas celdas no forman parte del rango 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 al rango completo de FruitChoices, incluidas las celdas vacías H9 y H10.

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

Una solución a este problema es utilizar una dinámicanombre del rango como fuente de las opciones desplegables. Un nombre de rango dinámico es aquel 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, utiliza una fórmula, en lugar de un rango fijo de direcciones de celda, para definir el rango con nombre.

Cómo configurar una dinámica Rango 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):

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

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

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

La fórmula completa utilizada para definir el rango dinámico para el Las opciones de frutas son:

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(OFFSET(FruitsHeading,1,0,20,1)),0,0),0)-1,20),1)

FruitsHeadingse refiere al encabezado que está una fila arriba de la primera entrada de 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 podrían agregar entradas adicionales. El número 20 se refiere al bloque completo donde se pueden realizar entradas, no al número real de entradas.

Ahora, desglosemos la fórmula en partes (codificando por color cada pieza), para comprender cómo funciona. :

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(OFFSET(FruitsHeading,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 más de 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 parte de la fórmula es la función ISBLANK:

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(the above),0,0),0)-1,20),1)

Aquí, la función DESPLAZAMIENTO (explicada anteriormente) ha sido reemplazada por "lo 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 crea un conjunto de 20 valores VERDADERO y FALSO, indicando si cada una de las celdas individuales en el 20- el rango de 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 FALSOS ya que las primeras 8 celdas no están vacías y los últimos 12 valores serán VERDADEROS.

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

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(the above,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 ISBLANK.

ÍNDICEse usa normalmente para seleccionar un cierto 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 a cero (como se hace aquí) hace que INDEX devuelva una matriz que contiene todo el bloque de datos.

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

=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,the above,0)-1,20),1)

La función MATCHdevuelve la posición del primer valor VERDADERO, dentro de la matriz que devuelve la función INDEX. Como las primeras 8 entradas en la lista no están en blanco, los primeros 8 valores en la matriz serán FALSOS, y el noveno valor será VERDADERO (ya que la fila 9 then el 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 MATCH (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 parte de la fórmula es la función IFERROR:

=OFFSET(FruitsHeading,1,0,IFERROR(the above,20),1)

La función IFERROR devuelve un valor alternativo, si el primer valor especificado produce un error. Esta función se incluye ya que, si todo el bloque de celdas (las 20 filas) están llenas de entradas, la función MATCH devolverá un error.

Esto se debe a que le estamos diciendo a la función MATCH que busque el primer valor VERDADERO (en la matriz de valores de la función ISBLANK), pero si NINGUNA de las celdas está vacía, la matriz completa se rellenará con valores FALSOS. 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, MATCH devuelve un error), la función IFERROR en su lugar, devuelva el valor de 20 (sabiendo que debe haber 20 entradas en la lista).

Finalmente, OFFSET (FruitsHeading, 1,0, el anterior, 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 haya entradas en la lista (y 1 columna de ancho). Entonces, la fórmula completa en conjunto 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 el origen 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á la lista actual (consulte la Figura 6).

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 en ellas.

Como alternativa a especificar el número de filas en el bloque de lista, se puede asignar al bloque de lista su nombre de rango propio, que luego puede usarse 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 la lista de nombres es entonces:

=OFFSET(NamesHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(NamesBlock),0,0),0)-1,ROWS(NamesBlock)),1)

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

Entonces, para las listas desplegables que pueden editarse fácilmente (incluso por otros usuarios que pueden ser inexpertos), 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 rango dinámico se pueden usar en cualquier lugar donde necesite hacer referencia a un rango o lista que puede variar en tamaño. ¡Disfruta!

Artículos Relacionados:


16.01.2019