Como anidar más de siete funciones

04/03/2008 - 17:02 por asquipe | Informe spam
Hola a todos, mi problema es el siguiente:
En una celda he anidado en una función SI otras siete funciones SI. Lo que
tengo hecho es lo siguiente:
En la celda F4 puedo seleccionar una de las ocho provincias andaluzas, y
dependiendo cual elija,en la celda J4 me dará su latitud correspondiente.
Pues bien, cuando he querido añadir 4 ciudades más no he podido porque ya
había anidado las 7 funciones que te permite Excel. Quisiera saber si hay
alguna manera de "engañar" a Excel para poder poner otras 4 ciudades. O bien,
utilizar otra función que no sea necesario anidar tantas funciones. Eso sí,
sin recurrir a macros.

Un saludo.

Preguntas similare

Leer las respuestas

#6 asquipe
05/03/2008 - 00:23 | Informe spam
"Héctor Miguel" escribió:

hola, Miguel !

prueba definiendo nombres para cada una de las tablas (area de datos) acorde con "su provincia" (en la hoja de "radiaciones")
y en la hoja de "calc" (quizas) con aguna lista de validacion podrias rescatar (o reconstruir) la tabla de la provincia solicitada
funciones ?... +/- =indice(indirecto(nombre_provincia);fila;columna)

otra posibilidad es asignar nombres SOLO a una celda que "identifique" la provincia a la que corresponde la tabla "de enseguida"
y con "base" al nombre solicitado (igual por lista de validacion) usar la funcion =desref(...

supongo que los rangos que re/comentas del post anterior NO incluyen los titulos de fila/latitud <-> columna/meses -???-
en cualquier caso, convendria si aportas algun detalle que pudiera estarse quedando "en el tintero"

hay mas opciones y alternativas para este tipo de "rescate" de datos por variables "dinamicas" asi que...

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.



Hola, he encontrado una manera de hacerlo que aunque no es muy elegante sí
que es efectiva, que es definiendo nombres a esas fórmulas y poder así anidar
más de 7 funciones. Lo encontré en el siguiente enlace:
http://www.cpearson.com/excel/nested.htm
De todas formas voy a instalar el office 2007 ya que he visto que tiene
muchas mejoras respecto al 2003 y en concreto lo de poder anidar más
funciones que para mí es fundamental a no recurrir a macros.

Un saludo,
Respuesta Responder a este mensaje
#7 Héctor Miguel
05/03/2008 - 04:00 | Informe spam
hola, Miguel !

... he encontrado una manera de hacerlo que aunque no es muy elegante si que es efectiva
que es definiendo nombres a esas formulas y poder asi anidar mas de 7 funciones.
Lo encontre en el siguiente enlace: http://www.cpearson.com/excel/nested.htm
De todas formas voy a instalar el office 2007 ya que he visto que tiene muchas mejoras respecto al 2003
y en concreto lo de poder anidar mas funciones que para mi es fundamental a no recurrir a macros.



la tecnica que encontraste es similar (aunque no lo mismo) a lo que te propuse en el mensaje anterior ;)

tambien existen otras tecnicas que, cuando se vuelve "necesario" anidar mas de 7 funciones si-condicional
conviene mas "revisar" la estructura de lo que se requiere (realmente) resolver, y a manera de ejemplo:

1) la formula que expusiste (aunque esta con la limitante de las 7 anidaciones):
=si(f4="almería";36,84;si(f4="cádiz";26,53;si(f4="córdoba";37,89;si(f4="granada";37,18;si(f4="huelva";37,26;si(f4="jaén";37,77;si(f4="málaga";36,72;si(f4="sevilla";37,38;""))))))))

2) puedes "canjearla" por la funcion elegir que admite +/- 29 opciones de respuesta, y para las 8 anteriores quedaria +/- asi:
=elegir(coincidir(f4;{"almería"\"cádiz"\"córdoba"\"granada"\"huelva"\"jaén"\"málaga"\"sevilla"};0);36,84;26,53;37,89;38,18;37,26;37,77;36,72;37,38)

3) si requieres mas de 29 opciones de respuesta, puedes canjear la anterior por algo +/- como lo siguiente:
=indice({36,84\26,53\37,89\38,18\37,26\37,77\36,72\37,38};coincidir(f4;{"almería"\"cádiz"\"córdoba"\"granada"\"huelva"\"jaén"\"málaga"\"sevilla"};0))

cualquiera de estas dos propuestas (de ejemplo) utilizan matrices o elementos entre llaves {..\..\..} o puedes usar rangos en su lugar
(pero) ambas asumen que siempre se hara una seleccion dentro de los elementos en validacion (nada que no exista)

(insisto)... si cualquier duda (o informacion adicional, -salvo que sea "secreto de estado"-)... comentas ?
saludos,
hector.

__ la propuesta anterior __
prueba definiendo nombres para cada una de las tablas (area de datos) acorde con "su provincia" (en la hoja de "radiaciones")
y en la hoja de "calc" (quizas) con aguna lista de validacion podrias rescatar (o reconstruir) la tabla de la provincia solicitada
funciones ?... +/- =indice(indirecto(nombre_provincia);fila;columna)

otra posibilidad es asignar nombres SOLO a una celda que "identifique" la provincia a la que corresponde la tabla "de enseguida"
y con "base" al nombre solicitado (igual por lista de validacion) usar la funcion =desref(...

supongo que los rangos que re/comentas del post anterior NO incluyen los titulos de fila/latitud <-> columna/meses -???-
en cualquier caso, convendria si aportas algun detalle que pudiera estarse quedando "en el tintero"

hay mas opciones y alternativas para este tipo de "rescate" de datos por variables "dinamicas" asi que...

si cualquier duda (o informacion adicional)... comentas ?
Respuesta Responder a este mensaje
#8 asquipe
05/03/2008 - 09:24 | Informe spam

la tecnica que encontraste es similar (aunque no lo mismo) a lo que te propuse en el mensaje anterior ;)

tambien existen otras tecnicas que, cuando se vuelve "necesario" anidar mas de 7 funciones si-condicional
conviene mas "revisar" la estructura de lo que se requiere (realmente) resolver, y a manera de ejemplo:

1) la formula que expusiste (aunque esta con la limitante de las 7 anidaciones):
=si(f4="almería";36,84;si(f4="cádiz";26,53;si(f4="córdoba";37,89;si(f4="granada";37,18;si(f4="huelva";37,26;si(f4="jaén";37,77;si(f4="málaga";36,72;si(f4="sevilla";37,38;""))))))))

2) puedes "canjearla" por la funcion elegir que admite +/- 29 opciones de respuesta, y para las 8 anteriores quedaria +/- asi:
=elegir(coincidir(f4;{"almería"\"cádiz"\"córdoba"\"granada"\"huelva"\"jaén"\"málaga"\"sevilla"};0);36,84;26,53;37,89;38,18;37,26;37,77;36,72;37,38)

3) si requieres mas de 29 opciones de respuesta, puedes canjear la anterior por algo +/- como lo siguiente:
=indice({36,84\26,53\37,89\38,18\37,26\37,77\36,72\37,38};coincidir(f4;{"almería"\"cádiz"\"córdoba"\"granada"\"huelva"\"jaén"\"málaga"\"sevilla"};0))

cualquiera de estas dos propuestas (de ejemplo) utilizan matrices o elementos entre llaves {..\..\..} o puedes usar rangos en su lugar
(pero) ambas asumen que siempre se hara una seleccion dentro de los elementos en validacion (nada que no exista)

(insisto)... si cualquier duda (o informacion adicional, -salvo que sea "secreto de estado"-)... comentas ?
saludos,
hector.

Hola Héctor, para obtener las latitudes si veo correcto las fórmulas que me has expuesto, pero para obtener las radiaciones no veo forma de hacerlo a no ser que sea como yo lo hice porque ¿cómo voy a definir una función que coje datos de varias tablas distintas? es decir, yo tengo una tabla en blanco y se tiene que rellenar con los datos de 10-12 tablas distintas. Si quieres te puedo pasar el archivo y le echas un vistazo a ver cómo lo ves. Mi correo es Si me dices tu dirección te lo mando y lo ves.



Un saludo,
Respuesta Responder a este mensaje
#9 Héctor Miguel
05/03/2008 - 22:55 | Informe spam
hola, Miguel !

para obtener las latitudes si veo correcto las formulas que me has expuesto
pero para obtener las radiaciones no veo forma de hacerlo a no ser que sea como yo lo hice porque
como voy a definir una funcion que coje datos de varias tablas distintas?
es decir, yo tengo una tabla en blanco y se tiene que rellenar con los datos de 10-12 tablas distintas.
Si quieres te puedo pasar el archivo y le echas un vistazo a ver como lo ves...



haz una prueba sencilla +/- como sigue:

- un libro nuevo con dos hojas (hoja1 y hoja2)

- [hoja1] dos rangos de 3x3 p.e. [B4:D6] y [F4:H6]
[B4:D6] 1,2,3 / 4,5,6 / 7,8,9
[F4:H6] ´*10 (y rellenas el resto)
- asigna nombres a cada tabla de 3x3 en la hoja1 (p.e.)
[B4:D6] <= Uno
[F4:H6] <= Dos

- [hoja2] haz una validacion por lista (p.e.) en la celda [B4] con una lista directa: Uno,Dos
- para la tabla vacia (p.e.) en el rango [C6:E8] usas una formula +/- como la siguiente:
[C6] =indice(indirecto($b$4),filas(c$6:c6),columnas($c6:c6))
OJO con los separadores de argumentos, mi sistema usa a la coma ',' NO al punto y coma ';' :D
-> copias/arrastras la formula de C6 al resto de la tabla vacia [C6:E8]
- alterna la seleccion en la celda B4 y...

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#10 asquipe
06/03/2008 - 00:29 | Informe spam
haz una prueba sencilla +/- como sigue:

- un libro nuevo con dos hojas (hoja1 y hoja2)

- [hoja1] dos rangos de 3x3 p.e. [B4:D6] y [F4:H6]
[B4:D6] 1,2,3 / 4,5,6 / 7,8,9
[F4:H6] ´*10 (y rellenas el resto)
- asigna nombres a cada tabla de 3x3 en la hoja1 (p.e.)
[B4:D6] <= Uno
[F4:H6] <= Dos

- [hoja2] haz una validacion por lista (p.e.) en la celda [B4] con una lista directa: Uno,Dos
- para la tabla vacia (p.e.) en el rango [C6:E8] usas una formula +/- como la siguiente:
[C6] =indice(indirecto($b$4),filas(c$6:c6),columnas($c6:c6))
OJO con los separadores de argumentos, mi sistema usa a la coma ',' NO al punto y coma ';' :D
-> copias/arrastras la formula de C6 al resto de la tabla vacia [C6:E8]
- alterna la seleccion en la celda B4 y...

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Muchísimas gracias Héctor, eres un crack!!Va de maravilla, y la fórmula mucho más corta. Un genio.



Salu2!


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida