Analizar rango (fila a fila) y obtener unos calculos en unas celdas,,,,

29/07/2004 - 20:56 por lamarse | Informe spam
Buenas tardes/días/noches señores.
Tengo una consultilla en Excel, que, por mucho que miro y miro por los
foros, no alcanzo a ver la solución (o no se verlo). Por lo que veo
creo que para algunos de vosotros será de fácil resolver y así
contribuiremos a la correcta evolución del cometido de las NEWS.

Bueno, a ver si soy capaz de explicarlo bien y se entiende a la
primera.
De entrada pongo la tabla en si a la cual me refiero.

A B C D
01 [ ][ fechaI ][ fechaE ][ fechaE+1]
02 [ 1 ][ ][ ][ ]
03 [ 2 ][ 12-jul ][ 14-jul ][ 15-jul ]
04 [ 3 ][ ][ ][ ]
05 [ 4 ][ ][ ][ ]
06 [ 5 ][ ][ ][ ]
07 [ 6 ][ ][ ][ ]
08 [ 7 ][ 18-jul ][ 19-jul ][ 20-jul ]
09 [ ][ ][ ][ ]
10 [ ][ fecha ]
11 [ 1 ][ 1 ]
12 [ 2 ][ 1 ]
13 [ 3 ][ 1 ]
14 [ 4 ][ 2 ]
15 [ 5 ][ ]
16 [ 6 ][ ]
17 [ 7 ][ 1 ]
18 [ 8 ][ 1 ]
19 [ 9 ][ 2 ]
20 [ 10 ][ ]


Esta tabla esta divida en 2 partes. 1 es donde están los datos
(dinámicos) y la otra es donde quiero aplicar alguna formula o VBA
para obtener los resultados según la primera parte.
1ª Parte = el RANGO B2:D8
2ª Parte = el RANGO B11:C20

Cómo poder hacer que se analice todo el RANGO B2:B8 (fila por fila) y
empezando por la fila 2 (en B2), que me realice estos cálculos:

if B11² then C11=1 else
if B11>B2 & B11=<C2 then C11=1 else
if B11Ò then C11=2

que, como podéis ver, me deja un resultado en C11 (bueno, el resultado
que hay es el que se obtiene al revisar la fila B3, no la B2 que en si
no daría nada). De ahí que pase a B3 y así hasta finalizar el RANGO
B2:B8. Al terminar el RANGO B2:B8 simplemente pasa a la siguiente fila
de la 2ªParte y los cálculos pasan a ser:

if B12² then C12=1 else
if B12>B2 & B12=<C2 then C12=1 else
if B12Ò then C12=2

Las fechas que hay en el rango B2:D8 nunca se van a repetir, así que
haciendo todo el análisis, aunque encuentre la respuesta en la primera
fila, el chequeo de las siguientes nunca debe sobre escribir el
resultado obtenido en la primera (vamos, que si una vez encontrado el
resultado en la fila X, como que ya podría prescindir de revisarse las
siguientes filas).

La tabla ya representa (la 2ªParte) los resultados que se tendrían que
obtener según mis necesidades. Creo no haberme equivocado en la
expresión de los cálculos, pero en si los resultados han de ser los
que se ven.

Gracias por adelantado
Si cualquier cosa no se entiende, preguntar.

Víctor.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
30/07/2004 - 07:55 | Informe spam
hola, victor !

... a ver si soy capaz de explicarlo bien y se entiende a la primera [...]
... Si cualquier cosa no se entiende, preguntar.



[segun entiendo yo...]
=> la tabla1 corresponde al rango A2:D8 [en donde...]
[A] contiene... [¿algun numero 'de control'????] o... ¿NO 'importa' que contenga???
[B] contiene... una fecha_I [p.e. B3->12-jul
[C] contiene... una fecha_E [p.e. C3->14-jul
[D] contiene... la fecha_E+1 [p.e. D3->15-jul
=> la tabla2 corresponde al rango A11:C20 [en donde...]
[A] contiene... [¿debiera 'suponerse' que el mismo numero 'de control'???] o... ¿tampoco 'importa'???
[B] contiene... =>NO lo 'ejemplificas' :(( aunque -supongo que-... 'debiera ser'... una fecha_X ???<[C] <=> es aqui donde se requiere un 'resultado'... que NO esta 'claro' [para mi] por lo siguiente...

1°- ¿tiene alguna 'relacion' el dato en la columna 'A' de ambas tablas? o... NO es 'importante' ???
2°- ¿tiene alguna 'implicacion' el hecho de que ambas tablas sean de 'diferentes dimensiones'???
tabla1 es de 7 filas y... tabla2 es de 10 filas [???]
3°- ¿es 'necesario' que CADA 'B' [2ª tabla] sea 'verificada' DESDE LA PRIMER FILA [de la 1ª tabla]???
o... ¿solamente a partir de 'su correspondiente posicion' dentro de la 2ª tabla ???
o... ¿es solamente 'fila_posicion_tabla2' 'versus' [misma] 'fila_posicion_tabla1' ???
4°- [como yo lo veo...] existen [al menos] 6 posibilidades al buscar 'el dato' [de una tabla en otra]...
a) que se encuentre en 'B' o 'C' de tabla1 [misma 'fila_posicion_tablas']
b) que se encuentre en 'D' de tabla1 [misma 'fila_posicion_tablas']
c) que NO se encuentre [misma 'fila_posicion_tablas']
d) que se encuentre en 'B' o 'C'... pero en una 'fila_posicion' =>distinta<= 'entre' ambas tablas
e) que se encuentre en 'D'... pero en una 'fila_posicion' =>distinta<= 'entre' ambas tablas
f) que NO se encuentre [NI siquiera] en otra 'fila_posicion_tablas'
=>¿que 'resultado' se debiera 'poner', segun la 'variante_[no]_encontrada' ???

todo este 'rollo'... [me ha sido 'originado'] por tus comentarios en el sentido de...
'... que se analice todo el RANGO B2:B8 (fila por fila) ...'
'... aunque encuentre la respuesta en la primera fila, el chequeo de las siguientes ...'



=>el penultimo parrafo [me] resulta [particularmente] 'confuso'<= :( [probablemente...]
debido a que NO 'ejemplificaste' [adecuadamente] el contenido de 'B' en la 2ª tabla [???]

¿comentas datos adicionales?
saludos,
hector.
Respuesta Responder a este mensaje
#2 lamarse
30/07/2004 - 15:20 | Informe spam
Muchas gracias Hector Miguel por responder.
Por lo que veo no he hecho más que crear confusión. A ver, uff! me
seria mucho más fácil si pudiera añadir fotos!! (lease, GIF o JPG)
aqui, pero se me ocurre una solución (aunque sea solo para resolver la
duda, y luego no pueda servir para quien lea esta consulta en otras
fechas :-(
En fin, voy a comer y luego me pongo a interpretar lo entendido, a
aclarar dudas y a ampliar la informacion (por supuesto!!).

Gracias de nuevo.
Voy a añadir unos links donde pondré fotos y creo que pondré un XLS
directamente donde voy a proceder más ampliamente con los datos
directamente (asi se podrás acceder al mismo y ver en claro).


Victor

Héctor Miguel wrote in message news:...
hola, victor !

> ... a ver si soy capaz de explicarlo bien y se entiende a la primera [...]
> ... Si cualquier cosa no se entiende, preguntar.

[segun entiendo yo...]
=> la tabla1 corresponde al rango A2:D8 [en donde...]
[A] contiene... [¿algun numero 'de control'????] o... ¿NO 'importa' que contenga???
[B] contiene... una fecha_I [p.e. B3->12-jul
[C] contiene... una fecha_E [p.e. C3->14-jul
[D] contiene... la fecha_E+1 [p.e. D3->15-jul
=> la tabla2 corresponde al rango A11:C20 [en donde...]
[A] contiene... [¿debiera 'suponerse' que el mismo numero 'de control'???] o... ¿tampoco 'importa'???
[B] contiene... =>NO lo 'ejemplificas' :(( aunque -supongo que-... 'debiera ser'... una fecha_X ???<> [C] <=> es aqui donde se requiere un 'resultado'... que NO esta 'claro' [para mi] por lo siguiente...

1°- ¿tiene alguna 'relacion' el dato en la columna 'A' de ambas tablas? o... NO es 'importante' ???
2°- ¿tiene alguna 'implicacion' el hecho de que ambas tablas sean de 'diferentes dimensiones'???
tabla1 es de 7 filas y... tabla2 es de 10 filas [???]
3°- ¿es 'necesario' que CADA 'B' [2ª tabla] sea 'verificada' DESDE LA PRIMER FILA [de la 1ª tabla]???
o... ¿solamente a partir de 'su correspondiente posicion' dentro de la 2ª tabla ???
o... ¿es solamente 'fila_posicion_tabla2' 'versus' [misma] 'fila_posicion_tabla1' ???
4°- [como yo lo veo...] existen [al menos] 6 posibilidades al buscar 'el dato' [de una tabla en otra]...
a) que se encuentre en 'B' o 'C' de tabla1 [misma 'fila_posicion_tablas']
b) que se encuentre en 'D' de tabla1 [misma 'fila_posicion_tablas']
c) que NO se encuentre [misma 'fila_posicion_tablas']
d) que se encuentre en 'B' o 'C'... pero en una 'fila_posicion' =>distinta<= 'entre' ambas tablas
e) que se encuentre en 'D'... pero en una 'fila_posicion' =>distinta<= 'entre' ambas tablas
f) que NO se encuentre [NI siquiera] en otra 'fila_posicion_tablas'
=>¿que 'resultado' se debiera 'poner', segun la 'variante_[no]_encontrada' ???

todo este 'rollo'... [me ha sido 'originado'] por tus comentarios en el sentido de...
> '... que se analice todo el RANGO B2:B8 (fila por fila) ...'
> '... aunque encuentre la respuesta en la primera fila, el chequeo de las siguientes ...'

=>el penultimo parrafo [me] resulta [particularmente] 'confuso'<= :( [probablemente...]
debido a que NO 'ejemplificaste' [adecuadamente] el contenido de 'B' en la 2ª tabla [???]

¿comentas datos adicionales?
saludos,
hector.
Respuesta Responder a este mensaje
#3 lamarse
30/07/2004 - 16:58 | Informe spam
Hola de nuevo Hector.
Me he puesto a analizar mi explicacion y de entrada ya he detectado un
error GARRAFAL! asi que... obviamente no me podias entender (esto de
intentar recrear una tabla aqui para que se entendiera, me ha
despistado).
Lo siento mucho.
A continuación tienes el mismo articulo pero con las modificaciones
oportunas.

REPITIENDO:

De entrada pongo la tabla en si a la cual me refiero (y esta vez la
correcta)

A B C D
01 [ ][ fechaI ][ fechaE ][ fechaE+1]
02 [ 1 ][ ][ ][ ]
03 [ 2 ][ 12-jul ][ 14-jul ][ 15-jul ]
04 [ 3 ][ ][ ][ ]
05 [ 4 ][ ][ ][ ]
06 [ 5 ][ ][ ][ ]
07 [ 6 ][ ][ ][ ]
08 [ 7 ][ 18-jul ][ 19-jul ][ 20-jul ]
09 [ ][ ][ ][ ]
10 [ ][ fecha ]
11 [ 1 ][ 12-jul ][ 1 ]
12 [ 2 ][ 13-jul ][ 1 ]
13 [ 3 ][ 14-jul ][ 1 ]
14 [ 4 ][ 15-jul ][ 2 ]
15 [ 5 ][ 16-jul ][ ]
16 [ 6 ][ 17-jul ][ ]
17 [ 7 ][ 18-jul ][ 1 ]
18 [ 8 ][ 19-jul ][ 1 ]
19 [ 9 ][ 20-jul ][ 2 ]
20 [10 ][ 21-jul ][ ]


Esta tabla esta divida en 2 partes. 1 es donde están los datos
(dinámicos) y la otra es donde quiero aplicar alguna formula o VBA
para obtener los resultados según la primera parte.
1ª Parte = el RANGO B2:D8
2ª Parte = el RANGO B11:C20

Cómo poder hacer que se analice todo el RANGO B2:B8 (fila por fila) y
empezando por la fila 2 (en B2), que me realice estos cálculos:

if B11² then C11=1 else
if B11>B2 & B11=<C2 then C11=1 else
if B11Ò then C11=2

que, como podéis ver, me deja un resultado en C11 (bueno, el resultado
que hay es el que se obtiene al revisar la fila B3, no la B2 que en si
no daría nada). De ahí que pase a B3 y así hasta finalizar el RANGO
B2:B8. Al terminar el RANGO B2:B8 simplemente pasa a la siguiente fila
de la 2ªParte (o sea: fila12) y los cálculos pasan a ser:

if B12² then C12=1 else
if B12>B2 & B12=<C2 then C12=1 else
if B12Ò then C12=2

Las fechas que hay en el rango B2:D8 nunca se van a repetir, así que
haciendo todo el análisis, aunque encuentre la respuesta en la primera
fila, el chequeo de las siguientes nunca debe sobre escribir el
resultado obtenido en la primera (vamos, que si una vez encontrado el
resultado en la fila X, como que ya podría prescindir de revisarse las
siguientes filas).

La tabla ya representa (la 2ªParte) los resultados que se tendrían que
obtener según mis necesidades.

La primera vez me habia comido una columna entera y eso me lo
desmontaba todo. No se entendia nada. Creo que ahora (aunque ya no me
atrevo a asegurar) sí se entiende.

Para ampliar detalle, temporalmente dejo un forum.xls en esta URL:
http://forum.milusion.com/forum.xls

Ya no tengo muy claro que tus preguntas tenga sentido el responderlas,
aunque de todas maneras me voy a poner a responder y lo mandaré cuando
lo tenga, asi como el subir el forum.xls mucho más detallado y sobre
el terreno.

Muchas gracias de nuevo.

Victor
Respuesta Responder a este mensaje
#4 Javier G
30/07/2004 - 20:57 | Informe spam
Por qué no adjuntas el archivo???
Respuesta Responder a este mensaje
#5 Héctor Miguel
30/07/2004 - 21:35 | Informe spam
hola, victor !

... he detectado un error ... asi que... obviamente no me podias entender
... intentar recrear una tabla aqui para que se entendiera, me ha despistado).



=> y... [precisamente] en el punto con el que habia 'cerrado' mi respuesta anterior... ;)
'... debido a que NO 'ejemplificaste' [adecuadamente] el contenido de 'B' en la 2ª tabla [???] ...'

por lo demas [y obviando/omitiendo si respondes o no al resto de 'mis' dudas]...
el archivo que 'remites' es +/- 'claro' [graficamente] en el sentido de lo que necesitas 'resolver' :D
de acuerdo con el archivo, lo que necesitas es [segun yo] lo siguiente...
-> en la tabla1 ['C3:E22']... verificar/ver/revisar/encontrar/detectar/etc. ...
-> si las fechas de la tabla2 ['M4:M34'] se encuentran 'dentro' de las fechas 'dadas' en la tabla1
-> y ver si 'corresponden' a la fecha_INI o... a la fecha_END o... a la fecha_END+1 [?]
-> y... 'dejar' el resultado de la busqueda en el rango 'N4:N34' [junto a su 'correspondiente' fecha] ;)
las formulas para 'detectar'... dentro de cual rango de fechas [tabla1] se encuentran las fechas de tabla2...
a) si en fecha_INI =1*(no(eserror(coincidir(m4,$c$3:$c$22,0))))
b) si en fecha_END =max(($c$3:$c$22<m4)*(m4<=$d$3:$d$22)) <=esta es 'matricial'
c) si en fecha_END+1 =2*(no(eserror(coincidir(m4,$e$3:$e$22,0))))
=> para 'unir' todas las 'variantes' en una sola formula, que se convierte en matricial por b)... [p.e.]
[toma nota de que es una formula en una sola linea] p.e. en 'N4' [y despues la copias 'al resto']...
=1*(no(eserror(coincidir(m4,$c$3:$c$22,0))))+max(($c$3:$c$22<m4)*(m4<=$d$3:$d$22))+2*(no(eserror(coincidir(m4,$e$3:$e$22,0))))

si [como asi lo parece] tu excel es en ingles [las mismas formulas 'parciales']...
a) =1*(not(iserror(match(m4,$c$3:$c$22,0))))
b) =max(($c$3:$c$22<m4)*(m4<=$d$3:$d$22))
c) =2*(not(iserror(match(m4,$e$3:$e$22,0))))
'unificada' [y... =>matricial<=]...
=1*(not(iserror(match(m4,$c$3:$c$22,0))))+max(($c$3:$c$22<m4)*(m4<=$d$3:$d$22))+2*(not(iserror(match(m4,$e$3:$e$22,0))))

¿comentas?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida