sábado, febrero 18, 2006

Uso de Nombres (NAMES) en MS Excel

En varias de mis notas anteriores he mencionado el uso de "nombres" en la composición de fórmulas. En este contexto he utilizado "nombres" para señalar rangos o celdas (en definitiva, una celda es un rango de una sola celda).
En cuanto descubrí esta funcionalidad que ofrece Excel comencé a utilizarla profusamente, y siempre me ha llamado la atención que usuarios de nivel intermedio e inclusive alto, no la empleen. Así que vamos a hablar un poco sobre el uso de nombres en Excel.
Por lo general hablamos de rangos nominados ("named ranges" en inglés) pero enseguida veremos que los nombres en Excel son en realidad otra cosa.

El ejemplo más sencillo es de este tipo: en una Nombres1hoja de Excel tenemos una tabla con las ventas mensuales de un agente; en alguna otra celda tenemos el porcentaje de comisión que le corresponde:


En lugar de calcular la comisión que le corresponde a nuestro agente con la fórmula =SUMA(B2:B13), podemos nominar el rango B2:B13 como "ventas" y la celda B15 "porcentaje". Nuestra fórmula se verá entonces: =SUMA(ventas)*porcentaje. En este ejemplo sencillo las ventajas de usar nombres no parecen gran cosa, pero imagínense una fórmula complicada con referencias a otras hojas. Esta forma "auto-explicatoria" de escribir las fórmulas puede ser de gran ayuda. Y esto no es todo, pero las demás ventajas las veremos más adelante.
Hay varias formas de crear nombres. La más sencilla es usar el "cuadro de nombres"



La técnica es sencilla: primero marcamos el rango, luego escribimos el nombre en el cuadro de nombre y pulsamos Enter.



Hacemos lo mismo con la celda B15, y ya podemos escribir nuestra fórmula con nombres:



Para ver cómo interpreta Excel los nombres, abrimos el menú Insertar--->Nombre--->Definir



Aquí podemos ver que la definición del rango va precedida por un signo "=": =Hoja1!$B$2:$B$13, lo que nos dice que Excel interpreta los nombres como fórmulas y no precisamente como rangos. Por ejemplo, podemos crear un nombre que se llame "total_de_ventas" cuya definición es =SUMA(Hoja1!$B$2:$B$13). Podemos entonces rescribir la fórmula en la celda B16 de la siguiente manera: =total_de_ventas*porcentaje



Esto es muy importante porque podemos definir no solo rangos sino también fórmula los que nos permitirá hacer algunos "pases mágicos". Estos serán el tema de mi próxima entrada.

Por ahora me queda sólo agregar que no se pueden borrar nombres en el cuadro de nombres, como parecería lógico pensar. Para borrar nombres hay que activar el menú Insertar--->Nombre--->Definir, elegir el nombre que queremos borrar y pulsar el botón "Eliminar".
En la próxima entrada veremos cómo usar nombre para crear rangos dinámicos y como crear listas para validación de datos.



Categorías: Funciones&Formulas_, Varios _

Technorati Tags: ,

31 comentarios:

  1. Muy bueno su aticulo, estoy esperando ansioso una nueva nota de Ud., como siempre muy util.

    Saludos...
    Alfredo

    ResponderBorrar
  2. Excelente página, me ha servido de mucho.

    Quisiera hacerte una pregunta, en el archivo de ejemplo Nombres1.xls, muestras las fórmulas en las celdas B20 a la B23 ¿Cómo lo haces?


    Saluda César desde Chile.

    ResponderBorrar
  3. César
    lo que ves son los rangos (o las fórmulas) de los nomnres que hemos definido. Para copiarlos las definiciones de los nombres en una hja usas el menú Insertar--Nombre--Pegar.

    ResponderBorrar
  4. Un saludo para usted, Sr. Dunkelman en ésta, mi primera consulta.
    Si no me equivoco, cuando uno pega la lista de las definiciones de los nombres en la hoja, Excel "hace trampas", y convierte las celdas con las definiciones a formato texto, aunque si uno las comprueba siguen apareciendo como formato general. ¿Es así esto? Creo que hay todo un mundo por explorar en Excel, yo estoy en los comienzos.
    Mi enhorabuena por sus conocimientos, pero sobre todo por su altruismo al compartirlos con nosotros en su magnífico blog.

    Un saludo de Jesusmari desde Pamplona, España.

    ResponderBorrar
  5. Hola Jesusmari

    gracias por los conceptos. En cuanto al pegado de nombres, Excel convierte la fórmula en texto ya que de no ser así, veríamos el resultado de la fórmula y no el contenido del nombre.
    Si editas la celda que contiene la fórmula del nombre como texto (apretando F2) e inmediatamente apretas ENTER, verás que Excel realiza el cálculo de la fórmula.

    ResponderBorrar
  6. Mi enhorabuena. Me ha sido de una utilidad extraordinaria. Saludos

    ResponderBorrar
  7. Gracias sr Dunkelman!
    Como siempre, super utiles y provechosas sus entradas

    ResponderBorrar
  8. Y como se puede hacer esto con el excel 2007, esto de borrar nombres???

    ResponderBorrar
  9. Por supuesto, en la pestaña Fórmulas, en la etiqueta Nombres Definidos - Administrador de nombres.

    ResponderBorrar
  10. Hola Jorge, quisiera hacerle una consulta. Estoy intentando definir un nombre para un rango que está compusto por varios rangos de celdas. Al parecer tiene una limitación y no me deja asociar en un mismo nombre mas de un número limitado de rangos. Hay alguna manera de salvar este problema?
    Muchas gracias

    ResponderBorrar
  11. La limitación esta dado por la cantidad de caracteres en la fórmula del nombre (el texto en "se refiere a"). Este texto incluye el nombre de la hoja para cada rango. El límite es 255 caracteres.
    Una forma de incrementar la cantidad de rangos no continuos sería darle nombres cortos a las hojas. En luhar de llamar a la hoja "resultados" se la puede llamar "r" y ahorrar así 9 caracteres.
    Creo que si después de crear el nombre se cambia nuevamente el nombre de la hoja, Excel ignora el límite.

    ResponderBorrar
  12. Siguiendo con el tema del límite de la fórmula de los nombres, el límite es 244 caracteres. Jan Karel Pieterse ofrece un complemento que, además de muchas otras bondades, permite superar este límite.

    ResponderBorrar
  13. Hola Jorge, muchisimas gracias por tu ayuda, he descargado el complemento y funciona perfectamente.
    Un saludo y gracias nuevamente

    ResponderBorrar
  14. Se me ocurre una pregunta, a ver si es posible. Cuando defines un nombre p.ej "total_de_ventas" cuya definición es =SUMA(Hoja1!$B$2:$B$13)
    ¿seria posible utilizar ese mismo nombre en otra hoja2, pero que en ese caso la definicion fuera SUMA(Hoja2!$B$2:$B$13)?
    Gracias

    ResponderBorrar
  15. Si, es posible. Hay que definir el nombre de esta manera:

    =SUMA(!$B$2:$B$13)

    es decir, quitar la referencia a la hoja pero dejando el simbolo !

    ResponderBorrar
  16. Felicidades por el blog, me ha facilitado muchísimo el trabajo!
    Tengo una duda, imaginemos que tuviéramos las opciones "masculino", "femenino" y "neutro" en tu ejemplo. Podrías incluír más de una condición de la misma columna en la sumapodructo? Por ejemplo:
    ={SUMA(((C2:C11)>30)*((B2:B11)="masculino")*((B2:B11)="femenino")*1)}

    Muchas gracias por la ayuda, una vez más! ;)

    ResponderBorrar
  17. Si, pero la fórmula de tu ejemplo siempre daría 0, ya que difícilmente alguien puede ser femenino y al mismo tiempo masculino. Cuando dos condiciones tienen que cumplirse simultáneamente usamos * (multiplicación) para ligar entre las condiciones; cuando es suficiente que se cumpla una u otra condición, usamos + (suma)

    ResponderBorrar
  18. Buenos días, Jorge. Un post muy interesante.
    Sin embargo, aún tengo algunas dudas: ¿qué pasa si en la celda "porcentaje" en lugar de ese 5% de ejemplo tenemos una fórmula, por ejemplo: A+B*2C (dónde A se referirá las celdas A1, A2...A13; B a las celdas B1, B2... etc.)?

    Te describo el trabajillo que tengo entre manos, a ver si me puedes echar un cable:

    Tengo que utilizar 4 fórmulas complejas (condicionales anidados) usando distintos valores de una gran tabla de datos.
    Mi duda y mi pregunta es la siguiente: ¿Existe la posibilidad de aplicar, por ejemplo, la fórmula1, escrita en una celda aparte de la tabla, a diferentes celdas en diferentes líneas, sin tener que copiar ni arrastrar dicha fórmula?

    ¿Hay alguna manera de que la fórmula "reconozca" las referencias de la celda en la que quiero utilizarla?

    Un ejemplo supersencillo sería:

    fórmula1=A+B

    Si la aplico a la fila 10, me gustaría que directamete escogiera A10+B10.

    ¿Es esto factible?

    Muchas gracias y un saludo.

    Gloria

    ResponderBorrar
  19. Las referencias en los nombres funcionan de la misma manera que las referencias en las fórmulas que escribimos directamente en una celda. Si la referencia en "se refiere a" del nombre es absoluta (por ejemplo, $A$1), no importa donde pongamos el nombre, la referencia queda constante en A1. Si usas una referencia relativa (A1) o semi-relativa (por ejemplo, $A1), la referencia cambia en relación a la ubicación de la celda activa cuando el nombre fue creado. Ahora en castellano: si defino un nombre que se refiere a la fórmula =$A1+$B1, siendo la celda activa C1, cuando aplique el nombre en la celda C10, la referencia del nombre aputará a =$A10+$B10.

    ResponderBorrar
  20. Gracias, Jorge.
    Lo pruebo ahora mismo y te digo si me sirve, aunque no sé si me expliqué bien en el anterior comentario. Las fórmulas que quiero utilizar no hacen referencia a celdas de la tabla de datos; es decir, no hasta que la "llame", y esto es lo que no sé si es posible. A ver si consigo ser más clara: Imagina que tengo la fórmula V=1/3*H en una celda aparte de la tabla de datos. Si aplico/llamo esta fórmula en la celda 27, me gustaría que directamente apareciera V=1/3*H27; si la aplico a la celda 133, pues V=1/3*H133...
    Quizás no se pueda hacer directamente con Excel y haya que utilizar macros :-(
    Entretanto, voy a probar con lo que me dices más arriba.
    Gracias por tu tiempo,
    Gloria

    ResponderBorrar
  21. Gloria,
    me disculpo de antemano si algo de lo que escribo a continuación te resulta ofensivo. No es mi intención. No existe semejante fórmula V=1/3*H
    Las fórmulas siempre se refieren a celdas que cuyas referencias (dirección) están compuestas por dos parámetros: columna y fila.
    Si es que he entendido tu consulta, parece ser que no conoces el tema de las referencias (absolutas, telativas y mixtas) en Excel. De ser así te sugiero que estudies este tema que es fundamental para entender el funcionamiento de Excel.

    ResponderBorrar
  22. Hola, quería hacerte una pregunta sobre como crear una funcion donde la variable es en parte desconocida. Los valores que quiero que revise son:
    - no
    - si
    - no se
    - no...

    =SI(F8="no*";0;SI(F8="Si";1;3))
    Pero no funciona. Me podeis decir que tengo que utilizar para sustituir es parte de la variable que no conozco?

    Gracias.

    ResponderBorrar
  23. Sólo algunas funciones de Excel aceptan el uso de comodines (*, ?). En tu caso en lugar de comodines podemos usar la función HALLAR (que si acepta comodines, pero en tu caso no hacen falta).
    En ejemplo sería

    =SI(ESNUMERO(HALLAR("no";A8));0;1)

    La explicación detallada irá en una nota que publicaré en los próximos días.

    ResponderBorrar
  24. Hola Jorge, muchas gracias por la ayuda que nos das, como verás somos muchos los que tenemos dudas al aplicar Excel.
    Te planteo una consulta: tengo datos en una tabla con muchas columnas, cada columna es un mes.
    Quiero hacer en otra hoja, un resumen, incluyendo solo algunos meses (por ejemplo, el último, el anteúltimo, 6 meses atrás).
    Para hacer referencia a ciertos datos de esos meses, que irían cambiando cada mes, cómo te parece que haga?
    Si le pongo un nombre a cada columna, cómo pongo en una fórmula que me elija el valor de la fila 8 de esa columna?
    Muchas gracias!!!

    ResponderBorrar
  25. Lo más eficiente sería usar una tabla dinámica. Si no estás familiarizado con el tema te sugiero que leas las notas sobre el tema en el blog (puedes apretar el enlace Tablas Dinámicas en la parte superior de la plantilla).

    ResponderBorrar
  26. Sharon Martínez22 noviembre, 2012 20:46

    Hola Jorge, gracias por la informacion que nos facilitas por aquí, necesito de tu ayuda. Primero te explico que mi Excel esta en Inglés.
    Tengo una Columna con datos de Texto ("Mobiliario","Maquinaria","Edificio y "Terreno","Computo","Transporte") y necesito que la fórmula cuente sólo las celdas que contienen las primeras 4 descripciones, para tener el resultado en una sola celda. Pero no se que estoy haciendo mal.
    Estoy usando la Fórmula "COUNTIFS" y no se si lo este haciendo bien porque el resultado que me arroja es "0" cuando le doy mas de 1 criterio y un rango, no se si sea porque no me permite que escoja la misma columna como rango para los 4 criterios o estoy ocupando la formula incorrecta, te agradecería pudieras contestar rapido porque tengo que entregar un reporte :S...una disculpa por la presión.

    ResponderBorrar
  27. Te sugiero que me mandes el archivo (fijate en las instrucciones en el enlace Ayuda, en la parte superior de la plantilla).

    ResponderBorrar
  28. Wow!!! Soy considerado como un usuario avanzado en excel, pero cada vez que ingreso a tu blog me doy cuenta que soy un simple padawan. Buenísima publicación.

    ResponderBorrar
  29. Otto, ser un usuario avanzado o un experto es una cuestión relativa, no necesariamente en comparación con otros. Te invito a leer esta nota.

    ResponderBorrar
  30. Yo uso siempre que puedo nombres en las fórmulas, ya que me es más sencillo seguir los cálculos.

    Sin embargo, cuando tengo que compartir la hoja con compañeros, casi siempre me ocurre que a ellos les es más sencillo seguir los cálculos sin nombre en la fórmula, ya que prefieren ver a qué celdas hace referencia la fórmula.

    ¿Existe alguna opción en la que, usando el mismo Excel, yo pueda ver los nombres (=SUMA(ventas)*porcentaje) y otra persona pueda ver la fórmula (=SUMA(B2:B13)*B15)? Una especie de "deshabilitar nombres" o algo así...

    ResponderBorrar
  31. La única forma de hacerlo que se me ocurre es con código (macros). Tal vez publique un post sobre el tema.

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.