Uso de la opcion lista

22/02/2005 - 05:31 por Uso de una opción lista que cambie | Informe spam
Se desea en una hoja Excel con cientos de filas en las cuales se pueda tener
la opcion de escoger en una columna el centro de costo y en la otra el equipo
al cual se esta dando mantenimiento y que pertenece a dicho centro de costo.
Se ha podido trabajar con la opcion LISTA para escoger el centro de costo,
pero deseamos que con otra opcion LISTA se puedan escoger los equipos que
sean referentes a dicho centro de costo y que no aparezca toda la lista de
equipos que pertenecen a otros centros de costos.
Agradecere si me pueden informar si es factible realizarlo o si es necesario
alguna codificacion. De preferencia si se puede realizar sin botones de
comando.
Saludos
Noé

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
22/02/2005 - 09:17 | Informe spam
hola, Noe !

... en una hoja Excel con cientos de filas... se pueda tener la opcion de escoger
... en una columna el centro de costo y en la otra el equipo... que pertenece a dicho centro de costo.
... con la opcion LISTA... escoger el centro de costo
... con otra opcion LISTA... que no aparezca... equipos que pertenecen a otros centros de costos.
... si es factible realizarlo o si es necesario alguna codificacion. De preferencia... sin botones de comando.



si logro que sea 'entendible' el procedimiento que te expongo al final... ¡ ya la hicimos !!! :))
usaremos reglas de validacion por lista, nombres con referencia a rangos 'dinamicos' y...
[un poquito de] codigo en el modulo de eventos de la hoja con las listas [no lo pude 'evitar'] :(
voy a suponer que la base de datos con cada centro de costos y sus equipos esta en la hoja1
y que el rango con las listas de validacion esta en la hoja2 y es 'B2:C30' [ya lo ampliaras al 'real']
toma nota que mi separador de argumentos es la coma ',' NO punto y coma ';'

si cualquier duda... ¿comentas?
saludos,
hector.
==> en la hoja1 <1.- pones los centros de costos en la fila 1 [como encabezados de columna] ->iniciando en A1<-
2.- pones los equipos en las filas que se correspondan con su centro de costos ->iniciando en A2<-
=>no dejes celdas vacias de por medio NI en los centros NI en los equipos<3.- define los siguientes nombres [rangos dinamicos o 'cambiantes'] con [menu] insertar / nombre / definir
nombre: formula en el campo se refiere a...
Centros =DesRef(Hoja1!$A$1,,,1,ContarA(Hoja1!$1:$1))
Desplazar =Coincidir(Hoja2!Centro,Centros,0)
ColCentro =Extrae(Direccion(1,Desplazar),2,Encontrar("$",Direccion(1,Desplazar),2)-2)
Equipos =DesRef(Hoja1!$A$1,1,Desplazar-1,ContarA(Indirecto("Hoja1!"&ColCentro&":"&ColCentro))-1)
=> en la hoja2 <4.- usando [menu] datos / validacion...
valida el rango 'B2:B30' con lista seleccionando como origen =Centros
valida el rango 'C2:C30' con lista seleccionando como origen =Equipos
=> en el modulo de codigo de la hoja2 <Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("b2:c30")) Is Nothing Then
If Target.Count > 1 Then ActiveCell.Select
Names.Add Name:="Centro", RefersTo:="=" & Me.Name & "!$b$" & ActiveCell.Row
End If
End Sub

notas: con relacion al nombre que se va [re]definiendo en el evento...
sirve para detectar la columna del centro validado [col B] y desplazar para saber que equipos listar [col C]
la lista de los equipos de la columna 'C' sera dependiente del centro seleccionado en la columna 'B'
[obviamente] si se cambia la seleccion en 'B' cuando ya se habia seleccionado en 'C'... habria que 'corregir'
Respuesta Responder a este mensaje
#2 Uso de una opción lista que cambie
23/02/2005 - 02:57 | Informe spam
Muchas gracias, ha trabajado perfectamente tal como lo necesitaba.
Muy buen apoyo.
Tal como colocaste en tu respuesta, si cambio la opción de "centros" debo de
todas maneras corregir la columna "equipos". ¿Hay alguna manera que cuando se
cambie la celda "centros" quede en blanco la celda de "equipos" para poder
seleccionar nuevamente el equipo y evitar de esta manera que el usuario no
realice la corrección en "equipos"?
Saludos

Noé

"Héctor Miguel" escribió:

hola, Noe !

> ... en una hoja Excel con cientos de filas... se pueda tener la opcion de escoger
> ... en una columna el centro de costo y en la otra el equipo... que pertenece a dicho centro de costo.
> ... con la opcion LISTA... escoger el centro de costo
> ... con otra opcion LISTA... que no aparezca... equipos que pertenecen a otros centros de costos.
> ... si es factible realizarlo o si es necesario alguna codificacion. De preferencia... sin botones de comando.

si logro que sea 'entendible' el procedimiento que te expongo al final... ¡ ya la hicimos !!! :))
usaremos reglas de validacion por lista, nombres con referencia a rangos 'dinamicos' y...
[un poquito de] codigo en el modulo de eventos de la hoja con las listas [no lo pude 'evitar'] :(
voy a suponer que la base de datos con cada centro de costos y sus equipos esta en la hoja1
y que el rango con las listas de validacion esta en la hoja2 y es 'B2:C30' [ya lo ampliaras al 'real']
toma nota que mi separador de argumentos es la coma ',' NO punto y coma ';'

si cualquier duda... ¿comentas?
saludos,
hector.
=> => en la hoja1 <> 1.- pones los centros de costos en la fila 1 [como encabezados de columna] ->iniciando en A1<-
2.- pones los equipos en las filas que se correspondan con su centro de costos ->iniciando en A2<-
=>no dejes celdas vacias de por medio NI en los centros NI en los equipos<> 3.- define los siguientes nombres [rangos dinamicos o 'cambiantes'] con [menu] insertar / nombre / definir
nombre: formula en el campo se refiere a...
Centros =DesRef(Hoja1!$A$1,,,1,ContarA(Hoja1!$1:$1))
Desplazar =Coincidir(Hoja2!Centro,Centros,0)
ColCentro =Extrae(Direccion(1,Desplazar),2,Encontrar("$",Direccion(1,Desplazar),2)-2)
Equipos =DesRef(Hoja1!$A$1,1,Desplazar-1,ContarA(Indirecto("Hoja1!"&ColCentro&":"&ColCentro))-1)
=> en la hoja2 <> 4.- usando [menu] datos / validacion...
valida el rango 'B2:B30' con lista seleccionando como origen =Centros
valida el rango 'C2:C30' con lista seleccionando como origen =Equipos
=> en el modulo de codigo de la hoja2 <> Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("b2:c30")) Is Nothing Then
If Target.Count > 1 Then ActiveCell.Select
Names.Add Name:="Centro", RefersTo:="=" & Me.Name & "!$b$" & ActiveCell.Row
End If
End Sub

notas: con relacion al nombre que se va [re]definiendo en el evento...
sirve para detectar la columna del centro validado [col B] y desplazar para saber que equipos listar [col C]
la lista de los equipos de la columna 'C' sera dependiente del centro seleccionado en la columna 'B'
[obviamente] si se cambia la seleccion en 'B' cuando ya se habia seleccionado en 'C'... habria que 'corregir'



Respuesta Responder a este mensaje
#3 Héctor Miguel
23/02/2005 - 03:48 | Informe spam
hola, Noé !

... alguna manera que cuando se cambie la celda "centros" quede en blanco la celda de "equipos" [...]



[nuevamente] suponiendo que el rango de validacion para 'centros' [en hoja2] es 'B2:B30'...
en el modulo de codigo de 'la hoja' ==Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("b2:b30")) Is Nothing Then Target.Offset(, 1).ClearContents
End Sub

nota: requiere excel 2000 o superior para que el evento '_change' sea 'disparado'
[cuando la celda que cambia tiene validacion por lista 'tomada' de rangos]

saludos,
hector.
Respuesta Responder a este mensaje
#4 Uso de una opción lista que cambie
23/02/2005 - 20:33 | Informe spam
Héctor:

Muchas gracias por tu solución, en realidad agradezco tu apoyo. Ahora que se
está armando más este cuadro y se está volviendo más complejo. Estoy viendo
si se puede incluir ciertas capacidades más que te detallo a continuación:

1) Qué pasa si requiero colocar entre las filas b2 y b30 una línea que no
tiene nada que ver con lo que estoy trabajando por motivos de formato,
digamos está la fórmula deberá trabajar para las filas b2 a b15 y luego
continuará para las filas de b17 a b20 y de b21 a b30. Cuál sería tu
sugerencia para poder trabajar con tus comandos?.

2) Ya seleccionado el "equipo" y siguiendo la misma estructura que me has
enseñado, puedo llenar a una celda de una columna con otra lista que depende
del "equipo" seleccionado?. Por decir, si selecciono como centro de costo =
"Sala de cómputo" y a equipo = "Computador" y la siguiente columna debería
poder escogerse de una lista los trabajos que se pueden hacer en ella, por
ejemplo: "instalación de software", "limpieza de case", etc. Y si he escogido
otro equipo, por ejemplo "UPS", puedo escoger "limpieza", "revisión de
baterías", "revisión de tensión", etc., es decir apareceran otra relación de
trabajos de los cuales yo puedo seleccionar 1. Qué me recomiendas?

Saludos,
Noé


Muchas gracias, ha trabajado perfectamente tal como lo necesitaba.
Muy buen apoyo.
Tal como colocaste en tu respuesta, si cambio la opción de "centros" debo de
todas maneras corregir la columna "equipos". ¿Hay alguna manera que cuando se
cambie la celda "centros" quede en blanco la celda de "equipos" para poder
seleccionar nuevamente el equipo y evitar de esta manera que el usuario no
realice la corrección en "equipos"?
Saludos

Noé

"Héctor Miguel" escribió:

> hola, Noe !
>
> > ... en una hoja Excel con cientos de filas... se pueda tener la opcion de escoger
> > ... en una columna el centro de costo y en la otra el equipo... que pertenece a dicho centro de costo.
> > ... con la opcion LISTA... escoger el centro de costo
> > ... con otra opcion LISTA... que no aparezca... equipos que pertenecen a otros centros de costos.
> > ... si es factible realizarlo o si es necesario alguna codificacion. De preferencia... sin botones de comando.
>
> si logro que sea 'entendible' el procedimiento que te expongo al final... ¡ ya la hicimos !!! :))
> usaremos reglas de validacion por lista, nombres con referencia a rangos 'dinamicos' y...
> [un poquito de] codigo en el modulo de eventos de la hoja con las listas [no lo pude 'evitar'] :(
> voy a suponer que la base de datos con cada centro de costos y sus equipos esta en la hoja1
> y que el rango con las listas de validacion esta en la hoja2 y es 'B2:C30' [ya lo ampliaras al 'real']
> toma nota que mi separador de argumentos es la coma ',' NO punto y coma ';'
>
> si cualquier duda... ¿comentas?
> saludos,
> hector.
> => > => en la hoja1 <> > 1.- pones los centros de costos en la fila 1 [como encabezados de columna] ->iniciando en A1<-
> 2.- pones los equipos en las filas que se correspondan con su centro de costos ->iniciando en A2<-
> =>no dejes celdas vacias de por medio NI en los centros NI en los equipos<> > 3.- define los siguientes nombres [rangos dinamicos o 'cambiantes'] con [menu] insertar / nombre / definir
> nombre: formula en el campo se refiere a...
> Centros =DesRef(Hoja1!$A$1,,,1,ContarA(Hoja1!$1:$1))
> Desplazar =Coincidir(Hoja2!Centro,Centros,0)
> ColCentro =Extrae(Direccion(1,Desplazar),2,Encontrar("$",Direccion(1,Desplazar),2)-2)
> Equipos =DesRef(Hoja1!$A$1,1,Desplazar-1,ContarA(Indirecto("Hoja1!"&ColCentro&":"&ColCentro))-1)
> => en la hoja2 <> > 4.- usando [menu] datos / validacion...
> valida el rango 'B2:B30' con lista seleccionando como origen =Centros
> valida el rango 'C2:C30' con lista seleccionando como origen =Equipos
> => en el modulo de codigo de la hoja2 <> > Private Sub Worksheet_SelectionChange(ByVal Target As Range)
> If Not Intersect(Target, Range("b2:c30")) Is Nothing Then
> If Target.Count > 1 Then ActiveCell.Select
> Names.Add Name:="Centro", RefersTo:="=" & Me.Name & "!$b$" & ActiveCell.Row
> End If
> End Sub
>
> notas: con relacion al nombre que se va [re]definiendo en el evento...
> sirve para detectar la columna del centro validado [col B] y desplazar para saber que equipos listar [col C]
> la lista de los equipos de la columna 'C' sera dependiente del centro seleccionado en la columna 'B'
> [obviamente] si se cambia la seleccion en 'B' cuando ya se habia seleccionado en 'C'... habria que 'corregir'
>
>
>
Respuesta Responder a este mensaje
#5 Héctor Miguel
24/02/2005 - 00:49 | Informe spam
hola, Noé !

... se esta armando... este cuadro y se esta volviendo mas complejo
... si requiero colocar entre... b2 y b30 una linea... por motivos de formato, digamos
... trabajar para las filas b2 a b15 y luego... para... b17 a b20 y de b21 a b30 [...]



=> para las reglas de validacion, puedes seleccionar rangos 'discontinuos' para su aplicacion
o... puedes 'eliminar' validaciones [ya establecidas] a la/s celda/s que no las requieran.
=> para su 'manejo' por codigo [igualmente] puedes especificar rangos 'discontinuos' [p.e.]
en lugar de: ->Intersect(Target, Range("b2:b30"))<-
puedes usar ->Intersect(Target, Range("b2:b15,b17:b20,b22:b30"))<-
es decir, separas con una coma cada area [o rangos discontinuos]

... seleccionado el "equipo"... llenar a una celda... con otra lista que depende del "equipo" seleccionado?
... si selecciono... centro de costo... y equipo... la siguiente columna... una lista los trabajos
... por ejemplo: "instalacion de software", "limpieza de case", etc.
... si he escogido otro equipo... "limpieza", "revision de baterias", "revision de tension", etc. [...]



=> primero, se debera contar con otro 'listado' de los 'tipos' de servicios 'disponibles' [de preferencia en hoja aparte]
segundo, se debera 'casar' [de alguna forma] cada [tipo de] equipo con una lista de servicios 'aplicable'
tercero, podras diseñar/armar una 'estructura' de nombres y rangos 'dinamicos' [como la del ejemplo anterior]
... para tantas 'divisiones' de listas 'inter-dependientes' como sean necesarias
[imagino que despues vendra la necesidad de aplicar 'tarifas' que pudieran ser por servicio o por tiempo] -?-

dado que estas publicando desde la interfase web de los grupos, no podrias descargar un ejemplo :(
si quieres que te lo haga llegar... ¿a que direccion te lo podria enviar?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida