Repregunta sobre que 2do. combobox muestre valores según lo elegido en un 1ro

24/02/2004 - 17:01 por angel | Informe spam
Repregunta sobre Cómo se hace para que un segundo
combobox muestre sus valores según lo elegido en un
primer combobox?
Hola,
La otra vez preguntaba como hago para que un segundo
combobox muestre sus valores según lo elegido en un
primer combobox y me dieron una respuesta (Fernando
Arroyo) muy buena -la puse abajo-, pero que no me
funciona porque yo tengo las listas con la función OFFSET
Yo tengo definido desde Insert\Name en vez de la lista
con el rango Normal Ej
MiLista "=Hoja1!$D$21:$D$35"
-CON ESTO ME FUNCIONA BIEN cuando pongo: =INDIRECTO
("MiLista")-

En vez de esto yo lo tengo que definir como:
MiLista "=OFFSET(Hoja1!$D$21;;;COUNTA(Hoja1!
$D$21:$D$65000)+1)"
-CON ESTO NO ME FUNCIONA cuando pongo: =INDIRECTO
("MiLista")-

(Lo hago así con Offset porque dinámicamente se genera
una lista y esta puede ser hoy de 50 elementos y mañana
de 100)
COMO HAGO PARA QUE ME FUNCIONE TAMBIÉN CON LA FUNCION
OFFSET????

Nota: Si pongo un combo (Data\Validation) y en "Origen:
le pongo "MiLista" que tiene el Offset funciona
correctamente, pero con =INDIRECTO("MiLista") NO
FUNCIONA!!!!



Esta es la pregunta y la respuesta que había hecho:
Hay una funcionalidad que quiero implementar y que está
en un libro Excel que tengo, que el código NO está
protegido y que NO encuentro como está hecho.
Tengo un libro Excel que tiene una Hoja con un combobox
hecho con el menú Data\Validation y en la solapa Settings
tiene List y en Source una Lista definida desde
Insert\Name\Define. Ejemplo: PrimeraLista.
De acuerdo al valor elegido en este combobox que está en
C5 (Valor1, Valor2, Valor3, etc.), se muestra en D5 otro
combobox con los valores correspondientes al valor
elegido en el combobox anterior.
Es decir si en el primer combobox se elige Valor1 al
segundo combobox se le asocia la lista
SegundaListaparaValor1, si elige el Valor2 en el primer
combobox se le asocia al segundo combobox la lista
SegundaListaparaValor2.
Cómo se hace esto ya que NO encuentro el código o las
fórmulas que hacen esto por ningún lado del libro.
Cómo puedo saber cómo lo hace???

Respuesta:
Es más difícil de explicar que de hacer. Supongamos que
en el libro hay cuatro rangos con nombre:
- ListaParaC5, que hace referencia a un rango de tres
celdas que contienen
Valor1
Valor2
Valor3
- ListaParaValor1, que es el rango para la validación de
la celda D5 cuando C5=Valor1
- ListaParaValor2, que es el rango para la validación de
la celda D5 cuando C5=Valor2
- ListaParaValor3, que es el rango para la validación de
la celda D5 cuando C5=Valor3

Hay que crear un quinto rango, éste necesariamente desde
Insertar->Nombre->Definir, que vamos a llamar
ListaParaD5, y en el cuadro "Se refiere a:" hay que poner:

=INDIRECTO("ListaPara" & Hoja1!$C$5)

(suponiendo que la hoja se llamara Hoja1)

La validación para C5 debe ser "Permitir: Lista"
y "Origen: ListaParaC5"
La validación para D5 debe ser "Permitir: Lista"
y "Origen: ListaParaD5"

Y ya está. Al cambiar el valor de C5, la lista en D5
debería ser el número seleccionado.

Preguntas similare

Leer las respuestas

#1 Juan Pablo González
24/02/2004 - 18:49 | Informe spam
Debería ser:

=INDIRECTO(MiLista)

sin las comillas

Saludos,

Juan Pablo González

"angel" wrote in message
news:080901c3faef$6790daa0$
Repregunta sobre Cómo se hace para que un segundo
combobox muestre sus valores según lo elegido en un
primer combobox?
Hola,
La otra vez preguntaba como hago para que un segundo
combobox muestre sus valores según lo elegido en un
primer combobox y me dieron una respuesta (Fernando
Arroyo) muy buena -la puse abajo-, pero que no me
funciona porque yo tengo las listas con la función OFFSET
Yo tengo definido desde Insert\Name en vez de la lista
con el rango Normal Ej
MiLista "=Hoja1!$D$21:$D$35"
-CON ESTO ME FUNCIONA BIEN cuando pongo: =INDIRECTO
("MiLista")-

En vez de esto yo lo tengo que definir como:
MiLista "=OFFSET(Hoja1!$D$21;;;COUNTA(Hoja1!
$D$21:$D$65000)+1)"
-CON ESTO NO ME FUNCIONA cuando pongo: =INDIRECTO
("MiLista")-

(Lo hago así con Offset porque dinámicamente se genera
una lista y esta puede ser hoy de 50 elementos y mañana
de 100)
COMO HAGO PARA QUE ME FUNCIONE TAMBIÉN CON LA FUNCION
OFFSET????

Nota: Si pongo un combo (Data\Validation) y en "Origen:
le pongo "MiLista" que tiene el Offset funciona
correctamente, pero con =INDIRECTO("MiLista") NO
FUNCIONA!!!!



Esta es la pregunta y la respuesta que había hecho:
Hay una funcionalidad que quiero implementar y que está
en un libro Excel que tengo, que el código NO está
protegido y que NO encuentro como está hecho.
Tengo un libro Excel que tiene una Hoja con un combobox
hecho con el menú Data\Validation y en la solapa Settings
tiene List y en Source una Lista definida desde
Insert\Name\Define. Ejemplo: PrimeraLista.
De acuerdo al valor elegido en este combobox que está en
C5 (Valor1, Valor2, Valor3, etc.), se muestra en D5 otro
combobox con los valores correspondientes al valor
elegido en el combobox anterior.
Es decir si en el primer combobox se elige Valor1 al
segundo combobox se le asocia la lista
SegundaListaparaValor1, si elige el Valor2 en el primer
combobox se le asocia al segundo combobox la lista
SegundaListaparaValor2.
Cómo se hace esto ya que NO encuentro el código o las
fórmulas que hacen esto por ningún lado del libro.
Cómo puedo saber cómo lo hace???

Respuesta:
Es más difícil de explicar que de hacer. Supongamos que
en el libro hay cuatro rangos con nombre:
- ListaParaC5, que hace referencia a un rango de tres
celdas que contienen
Valor1
Valor2
Valor3
- ListaParaValor1, que es el rango para la validación de
la celda D5 cuando C5=Valor1
- ListaParaValor2, que es el rango para la validación de
la celda D5 cuando C5=Valor2
- ListaParaValor3, que es el rango para la validación de
la celda D5 cuando C5=Valor3

Hay que crear un quinto rango, éste necesariamente desde
Insertar->Nombre->Definir, que vamos a llamar
ListaParaD5, y en el cuadro "Se refiere a:" hay que poner:

=INDIRECTO("ListaPara" & Hoja1!$C$5)

(suponiendo que la hoja se llamara Hoja1)

La validación para C5 debe ser "Permitir: Lista"
y "Origen: ListaParaC5"
La validación para D5 debe ser "Permitir: Lista"
y "Origen: ListaParaD5"

Y ya está. Al cambiar el valor de C5, la lista en D5
debería ser el número seleccionado.
Respuesta Responder a este mensaje
#2 angel
25/02/2004 - 09:54 | Informe spam
Lo pongo sin comillas y me sigue dando error cuando
apunta a una lista con la función OFFSET
Saben que puede ser????

Debería ser:

=INDIRECTO(MiLista)

sin las comillas

Saludos,

Juan Pablo González

"angel" wrote in


message
news:080901c3faef$6790daa0$
Repregunta sobre Cómo se hace para que un segundo
combobox muestre sus valores según lo elegido en un
primer combobox?
Hola,
La otra vez preguntaba como hago para que un segundo
combobox muestre sus valores según lo elegido en un
primer combobox y me dieron una respuesta (Fernando
Arroyo) muy buena -la puse abajo-, pero que no me
funciona porque yo tengo las listas con la función OFFSET
Yo tengo definido desde Insert\Name en vez de la lista
con el rango Normal Ej
MiLista "=Hoja1!$D$21:$D$35"
-CON ESTO ME FUNCIONA BIEN cuando pongo: =INDIRECTO
("MiLista")-

En vez de esto yo lo tengo que definir como:
MiLista "=OFFSET(Hoja1!$D$21;;;COUNTA(Hoja1!
$D$21:$D$65000)+1)"
-CON ESTO NO ME FUNCIONA cuando pongo: =INDIRECTO
("MiLista")-

(Lo hago así con Offset porque dinámicamente se genera
una lista y esta puede ser hoy de 50 elementos y mañana
de 100)
COMO HAGO PARA QUE ME FUNCIONE TAMBIÉN CON LA FUNCION
OFFSET????

Nota: Si pongo un combo (Data\Validation) y en "Origen:
le pongo "MiLista" que tiene el Offset funciona
correctamente, pero con =INDIRECTO("MiLista") NO
FUNCIONA!!!!



Esta es la pregunta y la respuesta que había hecho:
Hay una funcionalidad que quiero implementar y que está
en un libro Excel que tengo, que el código NO está
protegido y que NO encuentro como está hecho.
Tengo un libro Excel que tiene una Hoja con un combobox
hecho con el menú Data\Validation y en la solapa Settings
tiene List y en Source una Lista definida desde
Insert\Name\Define. Ejemplo: PrimeraLista.
De acuerdo al valor elegido en este combobox que está en
C5 (Valor1, Valor2, Valor3, etc.), se muestra en D5 otro
combobox con los valores correspondientes al valor
elegido en el combobox anterior.
Es decir si en el primer combobox se elige Valor1 al
segundo combobox se le asocia la lista
SegundaListaparaValor1, si elige el Valor2 en el primer
combobox se le asocia al segundo combobox la lista
SegundaListaparaValor2.
Cómo se hace esto ya que NO encuentro el código o las
fórmulas que hacen esto por ningún lado del libro.
Cómo puedo saber cómo lo hace???

Respuesta:
Es más difícil de explicar que de hacer. Supongamos que
en el libro hay cuatro rangos con nombre:
- ListaParaC5, que hace referencia a un rango de tres
celdas que contienen
Valor1
Valor2
Valor3
- ListaParaValor1, que es el rango para la validación de
la celda D5 cuando C5=Valor1
- ListaParaValor2, que es el rango para la validación de
la celda D5 cuando C5=Valor2
- ListaParaValor3, que es el rango para la validación de
la celda D5 cuando C5=Valor3

Hay que crear un quinto rango, éste necesariamente desde
Insertar->Nombre->Definir, que vamos a llamar
ListaParaD5, y en el cuadro "Se refiere a:" hay que


poner:

=INDIRECTO("ListaPara" & Hoja1!$C$5)

(suponiendo que la hoja se llamara Hoja1)

La validación para C5 debe ser "Permitir: Lista"
y "Origen: ListaParaC5"
La validación para D5 debe ser "Permitir: Lista"
y "Origen: ListaParaD5"

Y ya está. Al cambiar el valor de C5, la lista en D5
debería ser el número seleccionado.



.

Respuesta Responder a este mensaje
#3 Fernando Arroyo
25/02/2004 - 12:53 | Informe spam
Que yo sepa, no es posible usar la función INDIRECTO con rangos dinámicos como lo quieres hacer.

He preparado una posible solución, pero pienso que se ve mucho mejor con un ejemplo que mediante explicaciones. Lo he subido a:

http://www.excelsp.com/ejemplos/eje...codigo.xls

Supongo que no te servirá tal como está, pero espero que al menos te dé alguna idea.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"angel" escribió en el mensaje news:080901c3faef$6790daa0$
Repregunta sobre Cómo se hace para que un segundo
combobox muestre sus valores según lo elegido en un
primer combobox?
Hola,
La otra vez preguntaba como hago para que un segundo
combobox muestre sus valores según lo elegido en un
primer combobox y me dieron una respuesta (Fernando
Arroyo) muy buena -la puse abajo-, pero que no me
funciona porque yo tengo las listas con la función OFFSET
Yo tengo definido desde Insert\Name en vez de la lista
con el rango Normal Ej
MiLista "=Hoja1!$D$21:$D$35"
-CON ESTO ME FUNCIONA BIEN cuando pongo: =INDIRECTO
("MiLista")-

En vez de esto yo lo tengo que definir como:
MiLista "=OFFSET(Hoja1!$D$21;;;COUNTA(Hoja1!
$D$21:$D$65000)+1)"
-CON ESTO NO ME FUNCIONA cuando pongo: =INDIRECTO
("MiLista")-

(Lo hago así con Offset porque dinámicamente se genera
una lista y esta puede ser hoy de 50 elementos y mañana
de 100)
COMO HAGO PARA QUE ME FUNCIONE TAMBIÉN CON LA FUNCION
OFFSET????

Nota: Si pongo un combo (Data\Validation) y en "Origen:
le pongo "MiLista" que tiene el Offset funciona
correctamente, pero con =INDIRECTO("MiLista") NO
FUNCIONA!!!!



Esta es la pregunta y la respuesta que había hecho:
Hay una funcionalidad que quiero implementar y que está
en un libro Excel que tengo, que el código NO está
protegido y que NO encuentro como está hecho.
Tengo un libro Excel que tiene una Hoja con un combobox
hecho con el menú Data\Validation y en la solapa Settings
tiene List y en Source una Lista definida desde
Insert\Name\Define. Ejemplo: PrimeraLista.
De acuerdo al valor elegido en este combobox que está en
C5 (Valor1, Valor2, Valor3, etc.), se muestra en D5 otro
combobox con los valores correspondientes al valor
elegido en el combobox anterior.
Es decir si en el primer combobox se elige Valor1 al
segundo combobox se le asocia la lista
SegundaListaparaValor1, si elige el Valor2 en el primer
combobox se le asocia al segundo combobox la lista
SegundaListaparaValor2.
Cómo se hace esto ya que NO encuentro el código o las
fórmulas que hacen esto por ningún lado del libro.
Cómo puedo saber cómo lo hace???

Respuesta:
Es más difícil de explicar que de hacer. Supongamos que
en el libro hay cuatro rangos con nombre:
- ListaParaC5, que hace referencia a un rango de tres
celdas que contienen
Valor1
Valor2
Valor3
- ListaParaValor1, que es el rango para la validación de
la celda D5 cuando C5=Valor1
- ListaParaValor2, que es el rango para la validación de
la celda D5 cuando C5=Valor2
- ListaParaValor3, que es el rango para la validación de
la celda D5 cuando C5=Valor3

Hay que crear un quinto rango, éste necesariamente desde
Insertar->Nombre->Definir, que vamos a llamar
ListaParaD5, y en el cuadro "Se refiere a:" hay que poner:

=INDIRECTO("ListaPara" & Hoja1!$C$5)

(suponiendo que la hoja se llamara Hoja1)

La validación para C5 debe ser "Permitir: Lista"
y "Origen: ListaParaC5"
La validación para D5 debe ser "Permitir: Lista"
y "Origen: ListaParaD5"

Y ya está. Al cambiar el valor de C5, la lista en D5
debería ser el número seleccionado.
Respuesta Responder a este mensaje
#4 angel
25/02/2004 - 17:08 | Informe spam
Probe lo que has hecho Fernando, esta entendido y
funciona muy bien!!!
Voy a ver como lo reestructuro porque cree manualmente
más de 50 listas con OFFSETs...
Gracias!!!

Que yo sepa, no es posible usar la función INDIRECTO con


rangos dinámicos como lo quieres hacer.

He preparado una posible solución, pero pienso que se ve


mucho mejor con un ejemplo que mediante explicaciones. Lo
he subido a:

http://www.excelsp.com/ejemplos/eje...ion_dos_ce


ldas_sin_codigo.xls

Supongo que no te servirá tal como está, pero espero que


al menos te dé alguna idea.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"angel" escribió


en el mensaje news:080901c3faef$6790daa0
$
Repregunta sobre Cómo se hace para que un segundo
combobox muestre sus valores según lo elegido en un
primer combobox?
Hola,
La otra vez preguntaba como hago para que un segundo
combobox muestre sus valores según lo elegido en un
primer combobox y me dieron una respuesta (Fernando
Arroyo) muy buena -la puse abajo-, pero que no me
funciona porque yo tengo las listas con la función OFFSET
Yo tengo definido desde Insert\Name en vez de la lista
con el rango Normal Ej
MiLista "=Hoja1!$D$21:$D$35"
-CON ESTO ME FUNCIONA BIEN cuando pongo: =INDIRECTO
("MiLista")-

En vez de esto yo lo tengo que definir como:
MiLista "=OFFSET(Hoja1!$D$21;;;COUNTA(Hoja1!
$D$21:$D$65000)+1)"
-CON ESTO NO ME FUNCIONA cuando pongo: =INDIRECTO
("MiLista")-

(Lo hago así con Offset porque dinámicamente se genera
una lista y esta puede ser hoy de 50 elementos y mañana
de 100)
COMO HAGO PARA QUE ME FUNCIONE TAMBIÉN CON LA FUNCION
OFFSET????

Nota: Si pongo un combo (Data\Validation) y en "Origen:
le pongo "MiLista" que tiene el Offset funciona
correctamente, pero con =INDIRECTO("MiLista") NO
FUNCIONA!!!!



Esta es la pregunta y la respuesta que había hecho:
Hay una funcionalidad que quiero implementar y que está
en un libro Excel que tengo, que el código NO está
protegido y que NO encuentro como está hecho.
Tengo un libro Excel que tiene una Hoja con un combobox
hecho con el menú Data\Validation y en la solapa


Settings
tiene List y en Source una Lista definida desde
Insert\Name\Define. Ejemplo: PrimeraLista.
De acuerdo al valor elegido en este combobox que está en
C5 (Valor1, Valor2, Valor3, etc.), se muestra en D5 otro
combobox con los valores correspondientes al valor
elegido en el combobox anterior.
Es decir si en el primer combobox se elige Valor1 al
segundo combobox se le asocia la lista
SegundaListaparaValor1, si elige el Valor2 en el primer
combobox se le asocia al segundo combobox la lista
SegundaListaparaValor2.
Cómo se hace esto ya que NO encuentro el código o las
fórmulas que hacen esto por ningún lado del libro.
Cómo puedo saber cómo lo hace???

Respuesta:
Es más difícil de explicar que de hacer. Supongamos que
en el libro hay cuatro rangos con nombre:
- ListaParaC5, que hace referencia a un rango de tres
celdas que contienen
Valor1
Valor2
Valor3
- ListaParaValor1, que es el rango para la validación de
la celda D5 cuando C5=Valor1
- ListaParaValor2, que es el rango para la validación de
la celda D5 cuando C5=Valor2
- ListaParaValor3, que es el rango para la validación de
la celda D5 cuando C5=Valor3

Hay que crear un quinto rango, éste necesariamente desde
Insertar->Nombre->Definir, que vamos a llamar
ListaParaD5, y en el cuadro "Se refiere a:" hay que


poner:

=INDIRECTO("ListaPara" & Hoja1!$C$5)

(suponiendo que la hoja se llamara Hoja1)

La validación para C5 debe ser "Permitir: Lista"
y "Origen: ListaParaC5"
La validación para D5 debe ser "Permitir: Lista"
y "Origen: ListaParaD5"

Y ya está. Al cambiar el valor de C5, la lista en D5
debería ser el número seleccionado.


.

Respuesta Responder a este mensaje
#5 Fernando Arroyo
26/02/2004 - 09:19 | Informe spam
Me alegra saber que te funciona.

Si son muchas listas, un par de posibles mejoras (quizás ya se te hayan ocurrido a ti) podrían ser:
- convertir en rango dinámico la lista para la celda C1, con lo que se podría ampliar sin tener que andar modificándolo a mano
- usar la siguiente fórmula a partir de B11, lo que evitaría tener que poner las letras de las columnas a mano:

=SI(A11<>"";IZQUIERDA(DIRECCION(1;FILA()-8;4);LARGO(DIRECCION(1;FILA()-8;4))-1);"")

La fórmula para la validación de D5 quedaría en este caso en algo parecido a:

=INDIRECTO(BUSCARV(C5;A11:B100;2;FALSO)&21&":"&BUSCARV(C5;A11:B100;2;FALSO)&CONTARA(INDIRECTO(BUSCARV(C5;A11:B100;2;FALSO) & "21:" &BUSCARV(C5;A11:B100;2;FALSO) & "65000"))+20)

donde B100 representa la última fila para el índice de listas (máximo de 89)

Un saludo.


Fernando Arroyo
MS MVP - Excel


"angel" escribió en el mensaje news:16a701c3fbb9$9d467db0$
Probe lo que has hecho Fernando, esta entendido y
funciona muy bien!!!
Voy a ver como lo reestructuro porque cree manualmente
más de 50 listas con OFFSETs...
Gracias!!!

Que yo sepa, no es posible usar la función INDIRECTO con


rangos dinámicos como lo quieres hacer.

He preparado una posible solución, pero pienso que se ve


mucho mejor con un ejemplo que mediante explicaciones. Lo
he subido a:

http://www.excelsp.com/ejemplos/eje...ion_dos_ce


ldas_sin_codigo.xls

Supongo que no te servirá tal como está, pero espero que


al menos te dé alguna idea.
Un saludo.


Fernando Arroyo
MS MVP - Excel


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