Buscar un valor según otro.

09/11/2007 - 16:15 por Alex | Informe spam
Hola amigos. Tengo un pequeño problema que no se resolver. Seguro que
es simple pero estoy nublado. El asunto es el siguiente:

Tengo en la columna A unas posiciones que son correlativas y enteras
(1, 2, 3,...) y en la columna B ciertos valores, enteros también. Lo
que quiero lograr es una fórmula en la columna C que me diga cual es
la última posición (columna A) anterior a la actual en la que se
encuentra el valor de la columna B. Si la posición última es la actual
necesito que me indique ésta como la última. Lo muestro con un ejemplo
por si no se entendió.

A B C
1 0 1
2 2 2
3 9 3
4 2 2
5 2 4
6 9 3
7 0 1

Si no se entendió me dicen, gracias.

Preguntas similare

Leer las respuestas

#1 Raul Bajo Sanz
09/11/2007 - 18:11 | Informe spam
Hola,

En Excel he sido incapaz, probablemente sea posible pero no sé cómo. De
todos modos he hecho algo en Access que da el resultado correcto por si lo
quieres usar.

Creo en Access una tabla de ejemplo con dos campos: 'id' y 'valor':

id valor
1 1
2 8
3 5
4 7
5 9
6 2
7 3
8 7
9 8
10 5
11 3
12 6
13 1
14 9
15 9
16 5
17 2
18 3
19 8
20 5
21 5
22 3
23 2
24 2
25 5
26 5
27 7
28 8
29 9
30 3

Después creo una consulta que use los dos campos de esa tabla, y le añado un
nuevo campo artificial creado con la fórmula:

Ultimo: SiInm(DMáx("[Hoja1]![id]";"[Hoja1]";"[Hoja1]![valor] = " & [valor] &
" AND [Hoja1]![id] < " & [id]) Es
Nulo;[id];DMáx("[Hoja1]![id]";"[Hoja1]";"[Hoja1]![valor] = " & [valor] & "
AND [Hoja1]![id] < " & [id]))

El resultado es el siguiente:

id valor Ultimo
1 1 1
2 8 2
3 5 3
4 7 4
5 9 5
6 2 6
7 3 7
8 7 4
9 8 2
10 5 3
11 3 7
12 6 12
13 1 1
14 9 5
15 9 14
16 5 10
17 2 6
18 3 11
19 8 9
20 5 16
21 5 20
22 3 18
23 2 17
24 2 23
25 5 21
26 5 25
27 7 8
28 8 19
29 9 15
30 3 22


Saludos.



"Alex" wrote:

http://www.microsoft.com/communitie...5824dafc67

Hola amigos. Tengo un pequeño problema que no se resolver. Seguro que
es simple pero estoy nublado. El asunto es el siguiente:

Tengo en la columna A unas posiciones que son correlativas y enteras
(1, 2, 3,...) y en la columna B ciertos valores, enteros también. Lo
que quiero lograr es una fórmula en la columna C que me diga cual es
la última posición (columna A) anterior a la actual en la que se
encuentra el valor de la columna B. Si la posición última es la actual
necesito que me indique ésta como la última. Lo muestro con un ejemplo
por si no se entendió.

A B C
1 0 1
2 2 2
3 9 3
4 2 2
5 2 4
6 9 3
7 0 1

Si no se entendió me dicen, gracias.


Respuesta Responder a este mensaje
#2 Héctor Miguel
09/11/2007 - 18:19 | Informe spam
hola, Alex !

asumiendo que los valores se inician en la fila1...
(solo toma en cuenta que mi sistema usa como separador de argumentos a la coma)

[C1] <- por obviedad, aqui solo cabria el numero 1 (no se requiere de formulas)

a partir de [C2] la siguiente formula:
=elegir(1+(contar.si(b$1:b1,b2)>0),filas(b$1:b2),sumaproducto(max(fila(b$1:b1)*(b$1:b1²))))

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

__ la consulta original __
Tengo en la columna A unas posiciones que son correlativas y enteras (1, 2, 3,...)
y en la columna B ciertos valores, enteros tambien.
Lo que quiero lograr es una formula en la columna C que me diga cual es la ultima posicion (columna A)
anterior a la actual en la que se encuentra el valor de la columna B.
Si la posicion ultima es la actual necesito que me indique esta como la ultima.
Lo muestro con un ejemplo ...
A B C
1 0 1
2 2 2
3 9 3
4 2 2
5 2 4
6 9 3
7 0 1
Respuesta Responder a este mensaje
#3 Alex
12/11/2007 - 15:31 | Informe spam
On 9 nov, 14:19, "Héctor Miguel"
wrote:
hola, Alex !

asumiendo que los valores se inician en la fila1...
(solo toma en cuenta que mi sistema usa como separador de argumentos a la coma)

[C1] <- por obviedad, aqui solo cabria el numero 1 (no se requiere de formulas)

a partir de [C2] la siguiente formula:
=elegir(1+(contar.si(b$1:b1,b2)>0),filas(b$1:b2),sumaproducto(max(fila(b$1:b1)*(b$1:b1²))))

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

__ la consulta original __

> Tengo en la columna A unas posiciones que son correlativas y enteras (1, 2, 3,...)
> y en la columna B ciertos valores, enteros tambien.
> Lo que quiero lograr es una formula en la columna C que me diga cual es la ultima posicion (columna A)
> anterior a la actual en la que se encuentra el valor de la columna B.
> Si la posicion ultima es la actual necesito que me indique esta como la ultima.
> Lo muestro con un ejemplo ...
> A B C
> 1 0 1
> 2 2 2
> 3 9 3
> 4 2 2
> 5 2 4
> 6 9 3
> 7 0 1



Tu fórmula se acerca bastante a lo que necesito, sin embargo, no es
del todo correcta pues funciona bien cuando los valores en la columna
B aún no tienen repetición pero cuando sí se repiten me informa una
posición más a la que debería. Te lo muestro con el ejemplo:

A B C Valores correctos
1 6 1 1 ok
2 1 2 2 ok
3 7 3 3 ok
4 3 4 4 ok
5 0 5 5 ok
6 9 6 6 ok
7 1 3 2 +1
8 6 2 1 +1
9 3 5 4 +1
10 5 10 10 ok
Respuesta Responder a este mensaje
#4 Héctor Miguel
12/11/2007 - 17:43 | Informe spam
hola, Alex !

Tu formula se acerca bastante a lo que necesito, sin embargo, no es del todo correcta pues
funciona bien cuando los valores en la columna B aun no tienen repeticion pero cuando si se repiten
me informa una posicion mas a la que deberia. Te lo muestro con el ejemplo:
A B C Valores correctos
1 6 1 1 ok
2 1 2 2 ok
3 7 3 3 ok
4 3 4 4 ok
5 0 5 5 ok
6 9 6 6 ok
7 1 3 2 +1
8 6 2 1 +1
9 3 5 4 +1
10 5 10 10 ok



no logro reproducir (con la formula propuesta) los valores que indicas en el ejemplo para la columna C (me explico):

a) en el rango [A1:A10] esta la numeracion consecutiva 1 a 10
b) en el rango [B1:B10] estan los valores: -> 6,1,7,3,0,9,1,6,3,5
c) en la celda [C1] se pone 1 (por omision)
d) a partir de la celda [C2] usando la formula de la propuesta anterior:
=elegir(1+(contar.si(b$1:b1,b2)>0),filas(b$1:b2),sumaproducto(max(fila(b$1:b1)*(b$1:b1²))))

-> obtengo en [C1:C10] los valores que reportas como correctos -> 1,2,3,45,6,2,1,4,10

si no es claro el uso de la funcion elegir(...), prueba cambiando a la funcion si-condicional (invirtiendo los argumentos)
-> a partir de la celda [C2] cambia la formula a:
=si(contar.si(b$1:b1,b2),sumaproducto(max(fila(b$1:b1)*(b$1:b1²))),filas(b$1:b2))

comentas si algo de mis supuestos y/o la forma y posicion de uso de la formula es distinta en la realidad ?
saludos,
hector.

__ las consultas anteriores __
asumiendo que los valores se inician en la fila1...
(solo toma en cuenta que mi sistema usa como separador de argumentos a la coma)

[C1] <- por obviedad, aqui solo cabria el numero 1 (no se requiere de formulas)

a partir de [C2] la siguiente formula:
=elegir(1+(contar.si(b$1:b1,b2)>0),filas(b$1:b2),sumaproducto(max(fila(b$1:b1)*(b$1:b1²))))

__ la consulta original __

Tengo en la columna A unas posiciones que son correlativas y enteras (1, 2, 3,...)
y en la columna B ciertos valores, enteros tambien.
Lo que quiero lograr es una formula en la columna C que me diga cual es la ultima posicion (columna A)
anterior a la actual en la que se encuentra el valor de la columna B.
Si la posicion ultima es la actual necesito que me indique esta como la ultima.


> Lo muestro con un ejemplo ...
A B C
1 0 1
2 2 2
3 9 3
4 2 2
5 2 4
6 9 3
7 0 1
Respuesta Responder a este mensaje
#5 Alex
15/11/2007 - 15:16 | Informe spam
On 12 nov, 13:43, "Héctor Miguel"
wrote:
hola, Alex !

> Tu formula se acerca bastante a lo que necesito, sin embargo, no es del todo correcta pues
> funciona bien cuando los valores en la columna B aun no tienen repeticion pero cuando si se repiten
> me informa una posicion mas a la que deberia. Te lo muestro con el ejemplo:
> A B C Valores correctos
> 1 6 1 1 ok
> 2 1 2 2 ok
> 3 7 3 3 ok
> 4 3 4 4 ok
> 5 0 5 5 ok
> 6 9 6 6 ok
> 7 1 3 2 +1
> 8 6 2 1 +1
> 9 3 5 4 +1
>10 5 10 10 ok

no logro reproducir (con la formula propuesta) los valores que indicas en el ejemplo para la columna C (me explico):

a) en el rango [A1:A10] esta la numeracion consecutiva 1 a 10
b) en el rango [B1:B10] estan los valores: -> 6,1,7,3,0,9,1,6,3,5
c) en la celda [C1] se pone 1 (por omision)
d) a partir de la celda [C2] usando la formula de la propuesta anterior:
=elegir(1+(contar.si(b$1:b1,b2)>0),filas(b$1:b2),sumaproducto(max(fila(b$1:b1)*(b$1:b1²))))

-> obtengo en [C1:C10] los valores que reportas como correctos -> 1,2,3,45,6,2,1,4,10

si no es claro el uso de la funcion elegir(...), prueba cambiando a la funcion si-condicional (invirtiendo los argumentos)
-> a partir de la celda [C2] cambia la formula a:
=si(contar.si(b$1:b1,b2),sumaproducto(max(fila(b$1:b1)*(b$1:b1²))),filas(b$1:b2))

comentas si algo de mis supuestos y/o la forma y posicion de uso de la formula es distinta en la realidad ?
saludos,
hector.

__ las consultas anteriores __

> asumiendo que los valores se inician en la fila1...
> (solo toma en cuenta que mi sistema usa como separador de argumentos a la coma)

> [C1] <- por obviedad, aqui solo cabria el numero 1 (no se requiere de formulas)

> a partir de [C2] la siguiente formula:
> =elegir(1+(contar.si(b$1:b1,b2)>0),filas(b$1:b2),sumaproducto(max(fila(b$1:b1)*(b$1:b1²))))

> __ la consulta original __

>> Tengo en la columna A unas posiciones que son correlativas y enteras (1, 2, 3,...)
>> y en la columna B ciertos valores, enteros tambien.
>> Lo que quiero lograr es una formula en la columna C que me diga cual es la ultima posicion (columna A)
>> anterior a la actual en la que se encuentra el valor de la columna B.
>> Si la posicion ultima es la actual necesito que me indique esta como la ultima.
> > Lo muestro con un ejemplo ...
>> A B C
>> 1 0 1
>> 2 2 2
>> 3 9 3
>> 4 2 2
>> 5 2 4
>> 6 9 3
>> 7 0 1



Miguel. Tu fórmula es correcta. El problema está en que recién me doy
cuenta que ésta me indica la fila correspondiente y en ese caso es
correcta. Sin embargo, tus resultados difieren de los míos porque yo
tomo como referencia a la columna A y no a las filas. Tu fórmula parte
del supuesto de que los valores comienzan en la fila 1 cuando en
realidad comienzan en la fila 2. En la fila 1 tengo los títulos para
los campos, es decir, las columnas. Al principio no lo especifiqué
para hacer más sencilla la exposición del asunto. Supuse que
simplemente haciendo los cambios pertinentes a la fórmula tipo
propuesta por tí bastaría pero pasé por alto que ésta está basada en
los valores absolutos de las filas y no en los relativos de las celdas
o, lo que es lo mismo, en los valores de la columna A. Las disculpas
del caso.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida