BuscarV con una tabla 2 valores

15/09/2003 - 10:12 por JaviML | Informe spam
Tengo en las celdas:

B1 C1 D1 E1

Nombre desde hasta valor
Pepe 0 110 37
Pepe 111 180 35
Luis 0 120 28
Luis 121 220 68

Quiero que el usuario en una celda introduzca p.e. Pepe 150
y le devuelva el valor 35 ¿puede hacerse?¿como?
No me importa si tengo que cambiar esa tabla y hacer otra
para poder resolver este problema.
Gracias.

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
15/09/2003 - 12:17 | Informe spam
La siguiente es una posibilidad, pero sólo funcionará si en la tabla hay únicamente una fila que cumpla con los dos criterios (nombre e intervalo de valores). Ojo con esto, porque si no fuera así la fórmula podría devolver tanto un cero como cualquier otro valor como un error.

Suponiendo que el nombre a buscar estuviera en G1 y el valor en H1:

ÞSREF(B1;SUMAPRODUCTO((B2:B5=G1)*(C2:C5<=H1)*(D2:D5>=H1)*FILA(B2:B5))-1;3)

Si tu separador de listas fuese la coma, tendrás que sustituir con ella los puntos y coma que tiene la fórmula.
Un saludo.


Fernando Arroyo
MS MVP - Excel

"JaviML" escribió en el mensaje news:3db901c37b61$1bea9b30$
Tengo en las celdas:

B1 C1 D1 E1

Nombre desde hasta valor
Pepe 0 110 37
Pepe 111 180 35
Luis 0 120 28
Luis 121 220 68

Quiero que el usuario en una celda introduzca p.e. Pepe 150
y le devuelva el valor 35 ¿puede hacerse?¿como?
No me importa si tengo que cambiar esa tabla y hacer otra
para poder resolver este problema.
Gracias.
Respuesta Responder a este mensaje
#2 ramon
15/09/2003 - 12:33 | Informe spam
Otra posibilidad, esta mediante código. ¡Ojo! tendrás que hacer alguna
modificación para introducir los datos a tu gusto.

Sub Macro1()
'

Dim Nombre As String
Dim Valor As Long
Dim Hasta As Long
Dim RangoNombres As Range
Dim EncontradoNombre As Boolean
Dim EncontradoHasta As Boolean

Nombre = "Pepe"
Hasta = 150
Set RangoNombres = Range("A1:A4")

EncontradoNombre = False
EncontradoHasta = False
For Each Celda In RangoNombres
fila = Trim(Str(Celda.Row))
If Celda = Nombre Then
DatoHasta = Range("C" & fila).Value
EncontradoNombre = True
If DatoHasta > Hasta Then
Valor = Range("D" & fila).Value
MsgBox "Valor: " & Str(Valor)
EncontradoHasta = True
End If
End If
Next

If Not EncontradoNombre Then
MsgBox "No se ha encontrado nombre: " & Nombre
Exit Sub
End If

If Not EncontradoHasta Then
MsgBox "Se ha encontrado el nombre: " & Nombre & " pero no el valor " &
Str(Hasta)
Exit Sub
End If

'
End Sub




"JaviML" escribió en el mensaje
news:3db901c37b61$1bea9b30$
Tengo en las celdas:

B1 C1 D1 E1

Nombre desde hasta valor
Pepe 0 110 37
Pepe 111 180 35
Luis 0 120 28
Luis 121 220 68

Quiero que el usuario en una celda introduzca p.e. Pepe 150
y le devuelva el valor 35 ¿puede hacerse?¿como?
No me importa si tengo que cambiar esa tabla y hacer otra
para poder resolver este problema.
Gracias.
Respuesta Responder a este mensaje
#3 Pepito
15/09/2003 - 18:39 | Informe spam
Fernando saludos !!!
Si puedes, por favor, explícame la fórmula que propones,
la función SUMAPRODUCTO sé que es una función muy potente
pero yo no he logrado dominarla bien .Entiendo bien lo que
se quiere .
Nota: La solución que propone Ramón con VBA la entiendo
mejor.;-=(
Pepito

La siguiente es una posibilidad, pero sólo funcionará si


en la tabla hay únicamente una fila que cumpla con los dos
criterios (nombre e intervalo de valores). Ojo con esto,
porque si no fuera así la fórmula podría devolver tanto un
cero como cualquier otro valor como un error.

Suponiendo que el nombre a buscar estuviera en G1 y el


valor en H1:

ÞSREF(B1;SUMAPRODUCTO((B2:B5=G1)*(C2:C5<=H1)*(D2:D5>=H1)


*FILA(B2:B5))-1;3)

Si tu separador de listas fuese la coma, tendrás que


sustituir con ella los puntos y coma que tiene la fórmula.
Un saludo.


Fernando Arroyo
MS MVP - Excel

"JaviML" escribió en el mensaje


news:3db901c37b61$1bea9b30$
Tengo en las celdas:

B1 C1 D1 E1

Nombre desde hasta valor
Pepe 0 110 37
Pepe 111 180 35
Luis 0 120 28
Luis 121 220 68

Quiero que el usuario en una celda introduzca p.e. Pepe


150
y le devuelva el valor 35 ¿puede hacerse?¿como?
No me importa si tengo que cambiar esa tabla y hacer otra
para poder resolver este problema.
Gracias.



.

Respuesta Responder a este mensaje
#4 Fernando Arroyo
15/09/2003 - 19:52 | Informe spam
Yo tampoco me considero un experto en la función SUMAPRODUCTO, pero puedo intentar explicarte cómo trabaja en este caso concreto.
Quizás la mejor forma de comprender SUMAPRODUCTO sea "descomponerla" para analizarla mejor. Te he puesto un ejemplito en:

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

La "descomposición" de SUMAPRODUCTO está en el rango G2:J5. Cada una de las tres condiciones está evaluada para cada una de las filas. FALSO significa que la celda no cumple la condición, y VERDADERO que sí la cumple. Verás que, con los datos que se buscan en el ejemplo, tan sólo la fila 5 cumple las tres condiciones. Este dato (5) es el que suministra la función SUMAPRODUCTO a la función DESREF, que es la que se encarga de devolver el dato buscado (en este ejemplo, 68, que es el valor de E5).

Pienso que en éste ejemplo se ve también con claridad por qué es necesario que haya tan sólo una fila que cumpla las condiciones: si hubiera más, SUMAPRODUCTO devolvería la suma de dichas filas, lo que haría que DESREF, a su vez, hiciera referencia a cualquier celda de la columna E.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"Pepito" escribió en el mensaje news:354301c37ba7$ea02c1f0$
Fernando saludos !!!
Si puedes, por favor, explícame la fórmula que propones,
la función SUMAPRODUCTO sé que es una función muy potente
pero yo no he logrado dominarla bien .Entiendo bien lo que
se quiere .
Nota: La solución que propone Ramón con VBA la entiendo
mejor.;-=(
Pepito
Respuesta Responder a este mensaje
#5 Daniel.M
16/09/2003 - 20:09 | Informe spam
Hola,

O una otra alternativa, la formula MATRICIAL (Ctrl-May-Entr) siguiente:

=MIN(SI((B$2:B$5=G1)*(C$2:C$5<=H1)*(D$2:D$5>=H1);E$2:E$5))

Saludos,

Daniel M.

"JaviML" wrote in message
news:3db901c37b61$1bea9b30$
Tengo en las celdas:

B1 C1 D1 E1

Nombre desde hasta valor
Pepe 0 110 37
Pepe 111 180 35
Luis 0 120 28
Luis 121 220 68

Quiero que el usuario en una celda introduzca p.e. Pepe 150
y le devuelva el valor 35 ¿puede hacerse?¿como?
No me importa si tengo que cambiar esa tabla y hacer otra
para poder resolver este problema.
Gracias.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida