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

#6 lamarse
31/07/2004 - 10:09 | Informe spam
Javier, ¿puedo? Estaría encantado de hacerlo, pero no sé cómo hacerlo.
¿Me enseñas? Asi será todo más fácil. Espero no te estés refiriendo a
que, cuando has escrito este MSG, habias mirado en la URL y habia
coincidido en que AUN no habia upload el FILE forum.xls.

Bueno, si realmente te estás refiriendo a la posibilidad de poder
adjuntar un archivo aqui en el mismo mensaje y me lo explicas, asi lo
haré e inclusive llegaré a poner el resultado final una vez ya lo
tenga, pero si te referias a que no estaba el forum.xls, eso ya esta
solucionado p.q. ya lo he puesto.
De todas maneras, una vez esté el tema aclarado publicaré aqui la
solucion completa, para que se pueda entender ya que, (a no ser que tu
tengas razon) a mi entender no quedaria claro para alguien más que
pueda estar teniendo el mismo problema.

Victor
Respuesta Responder a este mensaje
#7 lamarse
01/08/2004 - 01:22 | Informe spam
Hola Hector.

Aquí te paso las respuestas a tus preguntas de la primera y de la
segunda vez.
Te cuento que he aplicado la formula que me has dado en tu ultima
respuesta (por entender que lo entendias correctamente) y el resultado
ha sido que NO me ha dejado copiarla en la celda N4. La copio y al
darle ENTER, simplemente me aparece un error, me dice que la formula
contiene un error.
En fin, he actualizado el forum.xls con dicha formula aplicada, aunque
le he especificado a la celda que el contenido es simplemente TEXTO
así que no me analiza la formula como esta (o sea le he cambiado el
formato, solo lo has de poner de nuevo y verás que te sale el error
que te digo). Vamos, a no ser que yo tenga algo mal indicado en mi
Excel y por eso me mal interpreta.
Te cuento que mi Excel es en ingles.

Gracias por todo una vez más.

Victor




<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 [???]



EL tamaño no implica nada. Lo unico que interesa es que cada fila de
la tabla2 rastreará todas las filas de la tabla1 (en este caso eran 7
pero podrian ser 40, da igual. Entiendo que si luego le cambiamos el
rango analizará mayor numero de filas de la tabla1 pues habrá cambiado
su tamaño en nº de 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' ???


Cada fila de la tabla2 analizará todas las filas de la tabla1 hasta
que encuentre su repuesta (un 0, un 1 o un 2). Bien podría hacer el
análisis al 100% de las filas o solo hasta que encontrara una
respuesta (es decir que si la respuesta la encuentra en la fila 1 de
la tabla1, pues nada.. ya tiene la respuesta y no seria necesario
continuar, pues no encontraría nada más y el camino podría ser inútil,
aunque entiendo que esto podría complicar el calculo, así que si la
sencillez lo solicita que analice el 100%). Cuando hablo de que
analice hasta encontrar una respuesta me estoy refiriendo a una
respuesta mayor de 0, es decir.. que sea un 1 o un 2, en caso de la
respuesta sea 0 entonces no era la respuesta adecuada y pasaría a la
siguiente fila a ver si encuentra un 1 o un 2. Si sucediera que
analice la ultima fila y el resultado sea un 0 también, pues nada, el
valor se quedaría en 0 (pues por defecto la fila donde van los
resultados de la tabla2 tendrían ya un 0)






<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

Así es, las fechas que se encuentran en la tabla2 [?M4:M34?] tienen
que ver con las que encuentras en la tabla1, aunque, no
necesariamente, pero yo haré coincidir que si en la TABLA 1 habla de
julio que en la tabla2 así lo haga también (yo no le veo mayor
importancia a esto, ya que entiendo que se hace (en los cálculos) unas
comparaciones y en caso de ser igual, simplemente hay unos resultados
y sino, pues hay otros (léase, nada).

< -> y ver si 'corresponden' a la fecha_INI o... a la fecha_END


o... a la ><fecha_END+1 [?]

Así es, los cálculos hacen referencia (como tu bien dices) a la
fecha_INI o la fecha_END o la fecha_END+1.


<-> y... 'dejar' el resultado de la busqueda en el rango 'N4:N34'


[junto a su ><'correspondiente' fecha] ;)

Cierto, los resultados de las comparaciones se depositan en dicho
rango ?N4:N34? (junto a su correspondiente fecha. Más detalles de esto
sería que luego creo una un chart que es un calendario (de julio en
este caso) y los días quedan marcados. Un 1 equivale a 1 color, un 2
equivale a otro color (cada color tiene un significado diferente) y un
0 equivale a nada. Esto es para indicar qué días se hizo el qué,
aunque? esto te lo cuento para que sepas un poco más).

<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*(n><ot(iserror(match(m4,$e$3:$e$22,0))))

<Hector, ¿Entiendo que he de copiar esta última línea dentro de la


celda N4? Pues así ><lo he probado y parece que no funciona. Sí tienes
razón, mi Excel es en inglés, por ><lo tanto he copiado esta linea
dentro de N4, y nada:

<=1*(not(iserror(match(m4,$c$3:$c$22,0))))+max(($c$3:$c$22<m4)*(m4<=$d$3:$d$22))+2*(n><ot(iserror(match(m4,$e$3:$e$22,0))))
Respuesta Responder a este mensaje
#8 Héctor Miguel
01/08/2004 - 07:58 | Informe spam
hola, victor !

... he aplicado la formula que me has dado en tu ultima respuesta
... (por entender que lo entendias correctamente)



=> oouuuuuch 'eso'... ¡ dolio !!! :D
[sobre todo, despues de los 'dizque' analisis efectuados desde tu consulta 'original']
[aunque... tu respuesta confirrma que he acertado... 'hasta en el idioma' de tu excel] ;)

... NO me ha dejado copiarla en ... N4 ... al darle ENTER, simplemente ... que la formula contiene un error.
... he actualizado el forum.xls con dicha formula aplicada, aunque le he especificado a la celda ... TEXTO
... a no ser que yo tenga algo mal indicado en mi Excel y por eso me mal interpreta.
... mi Excel es en ingles.



[por lo pronto...] solo te puedo comentar lo siguiente... [PROBADO con tu nuevo archivo]
1.- la formula propuesta... =>funciona al 100%<= [me da los resultados que tu 'señalas']
probablemente... sea alguna [o combinadas ambas] de las siguientes posibilidades...
2.- aunque tu excel sea en ingles, es probable que la configuracion regional de tu [panel de control de] windows...
'requiera' un separador de argumentos 'diferente' del 'mio' [yo uso la coma... ¿y tu???]
3.- cuando 'entras/editas' la formula... ¿'terminas' con las teclas ctrl+shift+enter??? o... 'nada mas' con enter [???]
te recuerdo [o te comento, por si lo no sabias] que las formulas 'matriciales' requieren esa combinacion de teclas
[aunque te lo 'avisaba' en el mensaje anterior... es probable que te 'resulten' como algo nuevo -y eso no lo se-] ;)

¿comentas?
saludos,
hector.
Respuesta Responder a este mensaje
#9 lamarse
01/08/2004 - 15:06 | Informe spam
OK OK OK.
Ya funciona!! Era cuestion de cambiar las [,] tuyas, por [;] mias!!

Más tarde me pondré a realizar un informe completo explicando todo
este asunto de inicio a fin, con necesidad y solución, para que
resulte util a quien sea que entre aqui en busca de esta problemática.
Tambien explicaré la problemática del [,] vs [;].

Muchas gracias Hector.
Respuesta Responder a este mensaje
#10 Héctor Miguel
01/08/2004 - 21:24 | Informe spam
hola, victor !

OK OK OK.
Ya funciona!! Era cuestion de cambiar las [,] tuyas, por [;] mias!!



aunque [generalmente] acostumbro 'advertir' sobre [posibles] separadores 'diferentes'...
[en esta ocasion] 'obvie' el comentario [por asumir que siendo tu excel en ingles...] :(( [diculpa] ;)

Muchas gracias Hector.



gracias a ti [por el 'feed-back'] ;)

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