Use nombres de rango dinámico en Excel para menús desplegables flexibles
Las hojas de cálculo de Excel(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(Data Validation) (en la pestaña Datos ), seleccione (Data)Validación de datos(Data Validation) , elija Lista(List) (en Permitir(Allow) :) y luego ingrese los elementos de la lista (separados por comas). ) en el campo Fuente(Source) : (ver Figura 1).
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(named range within the spreadsheet) de cálculo y luego especificar ese nombre de rango (precedido por un signo igual) en el campo Fuente(Source) : de la validación de datos (como se muestra en la Figura 2(Figure 2) ).
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, las entradas Peras(Pears) y Fresas(Strawberries) se borran, 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 estos motivos, 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. (dynamic)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(formula) , en lugar de un rango fijo de direcciones de celda, para definir el rango con nombre.
Cómo configurar un rango dinámico(Dynamic Range) 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 más abajo, tomada de una hoja de cálculo separada que usa nombres de rango dinámico):
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(FRUITS) ). A ese encabezado también se le asigna un nombre: FruitsHeading :
La fórmula completa utilizada para definir el rango dinámico para las opciones de Frutas es:(Fruits)
=OFFSET(FruitsHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(OFFSET(FruitsHeading,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 entender 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(OFFSET) 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 .(Fruits)
La siguiente pieza 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 OFFSET (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 luego crea un conjunto de 20 valores VERDADERO(TRUE) y FALSO(FALSE) , 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(FALSE) ya que las primeras 8 celdas no están vacías y los últimos 12 valores serán VERDADERO(TRUE) .
La siguiente pieza de la fórmula es la función ÍNDICE(INDEX) :
=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(INDEX) devuelve una matriz que contiene los 20 valores TRUE / FALSE creados por la función ESBLANCO(ISBLANK) .
ÍNDICE(INDEX) 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(INDEX) devuelva una matriz que contiene todo el bloque de datos.
La siguiente pieza 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 COINCIDIR(MATCH) devuelve la posición del primer valor VERDADERO(TRUE) , dentro de la matriz que devuelve la función ÍNDICE(INDEX) . Dado que las primeras 8 entradas de la lista no están en blanco, los primeros 8 valores de la matriz serán FALSO(FALSE) y el noveno valor será VERDADERO(TRUE) (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(MATCH) (que da la posición de la última entrada). Entonces, en última instancia, COINCIDIR(MATCH) ( VERDADERO(TRUE) , lo anterior, 0) -1 devuelve el valor de 8 .
La siguiente pieza 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 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(MATCH) devolverá un error.
Esto se debe a que le estamos diciendo a la función COINCIDIR(MATCH) que busque el primer valor VERDADERO(TRUE) (en la matriz de valores de la función ESBLANCO(ISBLANK) ), pero si NINGUNA(NONE) de las celdas está vacía, toda la matriz se llenará con valores FALSO . (FALSE)Si MATCH no puede encontrar el valor de destino ( VERDADERO(TRUE) ) en la matriz que está buscando, devuelve un error.
Entonces, si toda la lista está llena (y por lo tanto, COINCIDIR(MATCH) devuelve un error), la función SI.ERROR(IFERROR) 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(Figure 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.
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(Names) ) 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:
=OFFSET(NamesHeading,1,0,IFERROR(MATCH(TRUE,INDEX(ISBLANK(NamesBlock),0,0),0)-1,ROWS(NamesBlock)),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!
Related posts
Cómo eliminar líneas en blanco en Excel
Cómo usar la función Hablar celdas de Excel
Cómo insertar una hoja de cálculo de Excel en un documento de Word
Cómo usar el análisis What-If de Excel
Cómo arreglar una fila en Excel
Cómo eliminar filas duplicadas en Excel
3 formas de dividir una celda en Excel
Use Spike para cortar y pegar varios elementos de texto en Word
4 formas de usar una marca de verificación en Excel
Cómo ordenar por fecha en Excel
Cómo usar referencias absolutas en Excel
2 formas de usar la función de transposición de Excel
Diferencias entre Microsoft Excel Online y Excel para escritorio
Cómo insertar rápidamente varias filas en Excel
Cómo mover columnas en Excel
Centre los datos de su hoja de trabajo en Excel para imprimir
5 formas de convertir texto a números en Excel
Uso de la herramienta de búsqueda de objetivos de análisis hipotético de Excel
Hojas de cálculo de Google vs Microsoft Excel: ¿cuáles son las diferencias?
Cuándo usar Index-Match en lugar de VLOOKUP en Excel