BuscarV Multiples Opciones

27/05/2004 - 00:19 por Compumakro | Informe spam
Amigos:
La función BuscarV, (aunque no he tenido mucho contacto con ella) la
necesito ahora, pero de selección múltiple.

A B C D
Artículo Clase Voltage Precio
Lampara Escrit 110 20
Bombillo Elect 110 25
Lampara Port 12 15
Bombillo Halog 12 10
Bombillo Pare 6 8
Lampara Mano 6 10

En otra hoja y en la celda B2 tengo que poner la fórmula, en ella debo
Buscar "Bombillo" y debe visualizar (Como un Cuadro Combinado) todas las
opciones de "Bombillo" y se pueda seleccionar el "Bombillo" buscado y se
completen en consecuencia las celdas de dicha fila con los datos.
En la tabla de ejemplo hay varios Bombillo y varios Lampara.

Muchas Gracias

Oscar
Barranquilla

Preguntas similare

Leer las respuestas

#1 Amadeo Govoni
27/05/2004 - 13:44 | Informe spam
Algo simple
Aplicar Autofiltro
Suerte
consultas?
Amadeo

"Compumakro" escribió en el mensaje
news:
Amigos:
La función BuscarV, (aunque no he tenido mucho contacto con ella) la
necesito ahora, pero de selección múltiple.

A B C D
Artículo Clase Voltage Precio
Lampara Escrit 110 20
Bombillo Elect 110 25
Lampara Port 12 15
Bombillo Halog 12 10
Bombillo Pare 6 8
Lampara Mano 6 10

En otra hoja y en la celda B2 tengo que poner la fórmula, en ella debo
Buscar "Bombillo" y debe visualizar (Como un Cuadro Combinado) todas las
opciones de "Bombillo" y se pueda seleccionar el "Bombillo" buscado y se
completen en consecuencia las celdas de dicha fila con los datos.
En la tabla de ejemplo hay varios Bombillo y varios Lampara.

Muchas Gracias

Oscar
Barranquilla


Respuesta Responder a este mensaje
#2 Matías Villalba
27/05/2004 - 20:25 | Informe spam
Buscarv siempre trae lo primero que encuentra, en tu caso
encontraría el "Bombillo Eléctrico" de 110 absolutamente
todas las veces que solicites la palabra "Bombillo". Si
querés que encuentre algo distinto, debés hacer que cada
uno de ellos tenga una identificación diferente, como
un "Código de Producto" o algo así, si no lo tenés, lo más
práctico es primero insertar una columna a la izquierda y
luego fusionar, en la columna A, lo siguiente: +b1&"-
"&c1 , esto dará como resultado "Bombillo-Elec". Ahora
podés empezar a usar Buscarv.
+Buscarv("Bombillo-Elec";hoja2!a:e;2;0)

Buena Suerte.


Algo simple
Aplicar Autofiltro
Suerte
consultas?
Amadeo

"Compumakro" escribió en el


mensaje
news:
Amigos:
La función BuscarV, (aunque no he tenido mucho contacto




con ella) la
necesito ahora, pero de selección múltiple.

A B




C D
Artículo Clase Voltage




Precio
Lampara Escrit




110 20
Bombillo Elect




110 25
Lampara Port




12 15
Bombillo Halog




12 10
Bombillo Pare




6 8
Lampara Mano




6 10

En otra hoja y en la celda B2 tengo que poner la




fórmula, en ella debo
Buscar "Bombillo" y debe visualizar (Como un Cuadro




Combinado) todas las
opciones de "Bombillo" y se pueda seleccionar




el "Bombillo" buscado y se
completen en consecuencia las celdas de dicha fila con




los datos.
En la tabla de ejemplo hay varios Bombillo y varios




Lampara.

Muchas Gracias

Oscar
Barranquilla






.

Respuesta Responder a este mensaje
#3 Compumakro
28/05/2004 - 04:12 | Informe spam
Gracias por Atenderme.
El caso para ser más concreto es que hay una Hoja que es exclusivamente el
diseño de una factura.
Los Artículos, descripción y sus precios, están en otra Hoja. Son
aproximadamente 800 Artículos que están Agrupados con un mismo código en
grupos promediados de 10 articulos..
Entonces si yo digito en la columna "REF" de la factura el código "XXX",
entonces yo pretendo "Invocar" el grupo del código "XXX" con cualquier
recurso, ya sea, Cuadro Combinado, cuadro de lista, o si fuera posible aun
mejor, algo así como un InputBox y yo haré click en una de las opciones
(Artículos) y éste quedaría sentado en la fila correspondiente de la
factura.
La factura tiene 20 Filas en total.

Cordíal saludo
Oscar
Barranquilla

"Matías Villalba" escribió en el
mensaje news:139dc01c44418$015f1950$
Buscarv siempre trae lo primero que encuentra, en tu caso
encontraría el "Bombillo Eléctrico" de 110 absolutamente
todas las veces que solicites la palabra "Bombillo". Si
querés que encuentre algo distinto, debés hacer que cada
uno de ellos tenga una identificación diferente, como
un "Código de Producto" o algo así, si no lo tenés, lo más
práctico es primero insertar una columna a la izquierda y
luego fusionar, en la columna A, lo siguiente: +b1&"-
"&c1 , esto dará como resultado "Bombillo-Elec". Ahora
podés empezar a usar Buscarv.
+Buscarv("Bombillo-Elec";hoja2!a:e;2;0)

Buena Suerte.


Algo simple
Aplicar Autofiltro
Suerte
consultas?
Amadeo

"Compumakro" escribió en el


mensaje
news:
Amigos:
La función BuscarV, (aunque no he tenido mucho contacto




con ella) la
necesito ahora, pero de selección múltiple.

A B




C D
Artículo Clase Voltage




Precio
Lampara Escrit




110 20
Bombillo Elect




110 25
Lampara Port




12 15
Bombillo Halog




12 10
Bombillo Pare




6 8
Lampara Mano




6 10

En otra hoja y en la celda B2 tengo que poner la




fórmula, en ella debo
Buscar "Bombillo" y debe visualizar (Como un Cuadro




Combinado) todas las
opciones de "Bombillo" y se pueda seleccionar




el "Bombillo" buscado y se
completen en consecuencia las celdas de dicha fila con




los datos.
En la tabla de ejemplo hay varios Bombillo y varios




Lampara.

Muchas Gracias

Oscar
Barranquilla






.

Respuesta Responder a este mensaje
#4 Héctor Miguel
28/05/2004 - 09:24 | Informe spam
hola, Oscar !

... una hoja que es ... el diseño de una factura.
... articulos, descripcion y sus precios ... en otra hoja ... aproximadamente 800 [...]
... pretendo "Invocar" el grupo ... ya sea, cuadro combinado, cuadro de lista, o [...]
... click en una de las opciones y ... quedaria sentado en la fila correspondiente de la factura.
La factura tiene 20 Filas en total.



basandome en tu consulta 'original' donde la lista de articulos [hoja1?] es +/- como sigue...
[A] = articulo, [B] = clase, [C] = voltaje, [D] = precio


=>estoy 'omitiendo' el codigo porque no dices 'donde' esta ni como estan 'agrupados'<= :((
hasta donde alcanzo a 'apreciar'... se requieren 2 'filtrados' [x articulo y 'el resto'] ;)
te propongo lo siguiente [para hoja2] usando la barra de herramientas 'cuadro de controles'...
1.- incrusta un cuadro combinado [para un primer 'filtro' por la descripcion de los articulos]
2.- incrusta un cuadro de lista [para el segundo 'filtro' por clase + voltaje + precio]
3.- 'estando' en tiempo de diseño... ajusta [en el vbe] las propiedades de ambos controles...
[p.e. al cuadro de lista 'dale' 3 columnas y ajusta sus 'anchos' a las 3 celdas 'correspondientes']
4.- copia las siguientes lineas =>en el modulo de codigo de 'la hoja2'< [suponiendo que en la hoja2, la seleccion de articulos 'se hace' en 'B2:B21' y la clase en 'C2:C21']

si cualquier duda [o informacion adicional]... ¿comentas?
saludos,
hector.
-
Private Sub Worksheet_Activate(): ActualizarCombo: End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("b2:b21")) Is Nothing Then
With Me.ComboBox1
If Target <> "" Then .Text = Target Else .ListIndex = 0
.Left = Target.Left: .Top = Target.Top - 1: .Visible = True
End With
Else: Me.ComboBox1.Visible = False
End If
If Not Intersect(Target, Range("c2:c21")) Is Nothing Then
With Me.ListBox1
If Target.Offset(, -1) <> "" Then
ActualizarLista
.Left = Target.Left: .Top = Target.Top: .Visible = True
End If: End With
Else: Me.ListBox1.Visible = False
End If
End Sub
Private Sub ActualizarCombo(): Dim Celda As Range, Elementos As New Collection, Sig As Integer
Me.ComboBox1.Clear: Me.ComboBox1.AddItem "Seleccionar..."
With Worksheets("Hoja1")
For Each Celda In .Range(.Range("a2"), .Range("a65536").End(xlUp))
On Error Resume Next: Elementos.Add Celda, CStr(Celda)
Next: End With
With Me.ComboBox1
For Sig = 1 To Elementos.Count: .AddItem StrConv(Elementos.Item(Sig), vbProperCase)
Next: .AddItem "Borrar": .ListIndex = 0: End With
End Sub
Private Sub ComboBox1_Change(): If Intersect(ActiveCell, Range("b2:b21")) Is Nothing Then Exit Sub
With Me.ComboBox1
If .ListIndex > 0 Then
If .ListIndex = .ListCount - 1 _
Then ActiveCell.Resize(, 4).ClearContents: .ListIndex = 0 _
Else ActiveCell = .Text: ActiveCell.Offset(, 1).Resize(, 3).ClearContents
ElseIf .ListIndex = 0 And ActiveCell <> "" Then
.Text = ActiveCell
End If: End With: SendKeys "{Esc}"
End Sub
Private Sub ActualizarLista(): Dim Celda As Range, Sig As Integer: Me.ListBox1.Clear
With Worksheets("Hoja1")
For Each Celda In .Range(.Range("a2"), .Range("a65536").End(xlUp))
If LCase(Celda) = LCase(ActiveCell.Offset(, -1)) Then
With Me.ListBox1: .AddItem
.List(Sig, 0) = StrConv(Celda.Offset(, 1), vbProperCase)
.List(Sig, 1) = Celda.Offset(, 2): .List(Sig, 2) = Celda.Offset(, 3): Sig = Sig + 1
End With: End If: Next: End With
End Sub
Private Sub ListBox1_Click()
With Me.ListBox1
ActiveCell = StrConv(.List(.ListIndex, 0), vbProperCase)
ActiveCell.Offset(, 1) = .List(.ListIndex, 1): ActiveCell.Offset(, 2) = .List(.ListIndex, 2)
End With: SendKeys "{Esc}"
End Sub
Respuesta Responder a este mensaje
#5 Héctor Miguel
30/05/2004 - 08:32 | Informe spam
hola, Oscar !

... me he tropezado con una "Pared" ... se me esfumaron el ComboBox1 y el ListBox.1 [...]
Se que me ganare un "Jalon de orejas" si no entendi.



'pues'... una parte porque no 'entendiste' y 'otra'... porque no explicaste 'la situacion' =>completa<= :((
=> el combobox + el listbox + el codigo... 'van' =>todos<= en el modulo de codigo de la hoja 'factura' ;)
=> los datos 'a listar'... 'se leen' de la hoja con los articulos y sus descripciones, precios, etc.
=> el codigo lo he 'adaptado' debido a que tienes celdas 'combinadas' [en el formato de factura] :((
=> los siguientes son los 'cambios' [que 'tienes que' hacer] ;)
1.- estando en 'modo de diseño' [barra de herramientas 'cuadro de controles' / boton 'modo de diseño']...
'corta' el combobox y el listbox [de la hoja de los articulos] y...
'pegalos' =>en la hoja con el formato de la factura<= [no te preocupes 'ahorita' por 'donde quedan'] ;)
2.- en el editor de vba, en la ventana de las propiedades, =>modificales<= las siguientes:
ComboBox1:
- Height -> 18
- SelectionMargin -> False
- Width -> 73.5
ListBox1:
- ColumnCount -> 3
- ColumnWidths -> 256;87;65
- Height -> 63
- Width -> 424.5
3.- 'regresa' a la hoja de calculo [no mas en vba] y 'termina' el modo de diseño.
4.- 'pega' las lineas de codigo 'adaptadas' =>en el modulo de codigo de la hoja de factura<
¿comentas?
saludos,
hector.
- el codigo para el modulo de la hoja de la factura es.
Private Sub Worksheet_Activate(): ActualizarCombo: End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("b20:b39")) Is Nothing Then
With Me.ComboBox1
If Target <> "" Then .Text = Target Else .ListIndex = 0
.Left = Target.Left: .Top = Target.Top - 1: .Visible = True
End With
Else: Me.ComboBox1.Visible = False
End If
If Intersect(Target, Range("d20:g39")) Is Nothing Then
Me.ListBox1.Visible = False: Exit Sub
End If
With Me.ListBox1
If Target.Offset(, -2) <> "" Then
Call ActualizarLista: .Left = Target.Left: .Top = Target.Top: .Visible = True
Else: .Visible = False
End If: End With
End Sub
Private Sub ActualizarCombo(): Dim Celda As Range, Elementos As New Collection, Sig As Integer
Me.ComboBox1.Clear: Me.ComboBox1.AddItem "Seleccionar..."
With Worksheets("ARTICULOS")
For Each Celda In .Range(.Range("a2"), .Range("a65536").End(xlUp))
On Error Resume Next: Elementos.Add Celda, CStr(Celda)
Next: End With
With Me.ComboBox1
For Sig = 1 To Elementos.Count: .AddItem Elementos.Item(Sig)
Next: .AddItem "Borrar": .ListIndex = 0: End With
End Sub
Private Sub ComboBox1_Change(): If Intersect(ActiveCell, Range("b20:b39")) Is Nothing Then Exit Sub
With Me.ComboBox1
If .ListIndex > 0 Then
If .ListIndex = .ListCount - 1 Then
Range(ActiveCell, ActiveCell.Offset(, 7)).ClearContents: .ListIndex = 0
ElseIf .Text <> ActiveCell Then
ActiveCell = .Text: Range(ActiveCell.Offset(, 1), ActiveCell.Offset(, 7)).ClearContents
End If
ElseIf .ListIndex = 0 And ActiveCell <> "" Then
.Text = ActiveCell
End If: End With: SendKeys "{Esc}"
End Sub
Private Sub ActualizarLista(): Dim Celda As Range, Sig As Integer: Me.ListBox1.Clear
With Worksheets("ARTICULOS")
For Each Celda In .Range(.Range("a2"), .Range("a65536").End(xlUp))
If LCase(Celda) = LCase(ActiveCell.Offset(, -2)) Then
With Me.ListBox1: .AddItem
.List(Sig, 0) = Celda.Offset(, 1)
.List(Sig, 1) = Celda.Offset(, 2): .List(Sig, 2) = Celda.Offset(, 3): Sig = Sig + 1
End With: End If: Next: End With
End Sub
Private Sub ListBox1_Click()
With Me.ListBox1
ActiveCell = .List(.ListIndex, 0)
ActiveCell.Offset(, 1) = .List(.ListIndex, 1): ActiveCell.Offset(, 2) = .List(.ListIndex, 2)
End With: SendKeys "{Esc}"
End Sub
Private Sub Worksheet_Change(ByVal Target As Range): Dim Fila As Integer
If Intersect(Target, Range("b20:b39,c20:c39")) Is Nothing Then Exit Sub
For Fila = 20 To 39
If Cells(Fila, 3) > 0 And Cells(Fila, 9) > 0 Then
Cells(Fila, 10) = Cells(Fila, 3) * Cells(Fila, 9)
Cells(Fila, 1) = Application.Count(Range(Cells(20, 9), Cells(Fila, 9)))
End If
If Not IsEmpty(Cells(Fila, 2)) _
Then Cells(Fila, 1) = Application.CountA(Range(Cells(20, 2), Cells(Fila, 2))) _
Else Cells(Fila, 1).ClearContents
If IsEmpty(Cells(Fila, 3)) Or IsEmpty(Cells(Fila, 9)) Then Cells(Fila, 10).ClearContents
Next
End Sub
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida