localizar maximo/minimo anual

17/04/2004 - 06:42 por Jesús Román | Informe spam
Hola a todos!
No hace mucho leí en una de las repuestas como localizar el maximo o minimo
para un cierto numero de celdas
=K.ESIMO.MENOR(f3:f380;1)
=K.ESIMO.MAYOR(E3:E380;1)
Me ha servido de gran ayuda, pues para ello tenia una macro creada y esto de
ahora me es ma util y hábil

La cuestion es ahora que tambien tengo creada una macro para localizar el
maximo y el minimo anual ¿se podria hacer en lugar de con la macro con una
formula similar a las anteriores? las fechas las tengo en la columna A
(pertenecen a varios años), los datos maximos en la E y los maximos en F

Gracias

Preguntas similare

Leer las respuestas

#6 Víctor
17/04/2004 - 18:49 | Informe spam
Prueba estas fórmulas matriciales:

{=MAX(SI(A1:A2000>=G2;SI(A1:A2000<=G3;E1:E2000)))}
{=MIN(SI(A1:A2000>=G2;SI(A1:A2000<=G3;F1:F2000)))}

Coloca en G2 1-ene-04 y en G3 31-dic-04

y tendrás los valores máximo y mínimo del año 2004 (los
máximos, según dices, están en la columna E y los mínimos
en la F).

:-)

Cierto y lo siento, por explicarme tan mal
la cuestion es que la hoja se va creando dia a dia y




no podemos
determinar de antemano donde estan los datos.
te pego la macro que hace lo que yo quiero hacer a ver




si ahora me
explico mejor.

Sub minimoAno(ByVal i As Integer)
Range("Z" & i).Select
If Year(Range("A" & i).Value) = Year(Range("A" & i




+ 1).Value)
Then
'es el mismo año
If Range("F" & i).Value < Range("Z" & i +




1).Value Then
'si el valor del precio mas bajo del dia




es menor que
el mas bajo del año
'el valor mas bajo del dia pasa a ser el




mas bajo del
año
Range("Z" & i).Value = Range("F" & i).Value
Else
'si no es asi el valor mas bajo del año




sigue siendo el
del dia anterior
Range("Z" & i).Value = Range("Z" & i +




1).Value
End If
Else
'es distinto año, el valor mas bajo del año es




el valor mas
bajo del dia
Range("Z" & i).Value = Range("f" & i).Value
End If
End Sub

Es esto mismo lo que quiero hacer con una simple




funcion. ¿se
puede?, yo creo que si, pero ya te digo, que no tengo




patatera idea
de como hacerlo.


"fernando" escribió en el




mensaje
news:
>
> Hash: SHA1
>
> Supongamos que los datos del año 2000 esten entre




las filas 5 y 200 y
> que el maximo de ese año lo quiero grabar en la




celda b5. Entonces,
> en esa celda pongo la fórmula max(a5:a200).
> De manera similar para los mínimos y el resto de




años.
>
>
>
>
>
>
> "Jesús Román" <CRISONIA3(texto inactivo)@terra.es>




escribió en el
> mensaje news:6H5gc.4565888




$
> > Hola Fernando!
> >
> >
> > Lo que pretendo es que la funcion me localice el




maximo ANUAL, no
> > un maximo cualquiera... (tiene que determinar las




fechas dentro de
> > cada año) tengo varios años, dia a dia, en la




columna a y quiero
> > que me localice el maximo de cada año de una




columna concreta o
> > valor.
> >
> > ojalá me entiendas ahora!!
> > gracias por tu respuesta
> >
> > "fernando" escribió en el




mensaje
> > news:
> > >
> > > Hash: SHA1
> > >
> > > No está muy claro lo que pretendes.
> > > Si quieres escribir en una celda el valor maximo




de un rango, puedes
> > > utilizar la funcion max(e3:e380) y de manera




equivalente, en otra
> > > celda, puedes grabar el mínimo.
> > >
> > >
> > > "Jesús Román" <CRISONIA3(texto inactivo)




@terra.es> escribió en el
> > > mensaje news:HA2gc.4564211




$
> > > > Hola a todos!
> > > > No hace mucho leí en una de las repuestas como




localizar el maximo
> > > > o minimo para un cierto numero de celdas
> > > > =K.ESIMO.MENOR(f3:f380;1)
> > > > =K.ESIMO.MAYOR(E3:E380;1)
> > > > Me ha servido de gran ayuda, pues para ello




tenia una macro creada
> > > > y esto de ahora me es ma util y hábil
> > > >
> > > > La cuestion es ahora que tambien tengo creada




una macro para
> > > > localizar el maximo y el minimo anual ¿se




podria hacer en lugar de
> > > > con la macro con una formula similar a las




anteriores? las fechas
> > > > las tengo en la columna A (pertenecen a varios




años), los datos
> > > > maximos en la E y los maximos en F
> > > >
> > > > Gracias
> > > >
> > >
> > >
> >
>
>






.

Respuesta Responder a este mensaje
#7 Jesús Román
18/04/2004 - 07:03 | Informe spam
Hola Victor! gracias!!
Tampoco es lo que busco, no obstante tu respuesta es muy buena y funciona
bien.
El problema es que necesito una formula que de una total libertad al
programa, con esta... tendré que hacer cambio manuales para los años pasados
y tambien para los futuros.

Lo que exactamente necesito es que la funcion me ponga en un par de columnas
cercanas a donde estan los maximos/minimos y fechas los datos mayores y
menores correspondientes a cada fecha, pero sacando los datos por años
independientes.

pego de nuevo la macro, para ver si os da alguna idea, pues esta macro hace
exactamente lo que necesito y segun lo que veo me tendré que conformar con
seguir con ella.

Sub minimoAno(ByVal i As Integer)
Range("Z" & i).Select
If Year(Range("A" & i).Value) = Year(Range("A" & i + 1).Value) Then
'es el mismo año
If Range("F" & i).Value < Range("Z" & i + 1).Value Then
'si el valor del precio mas bajo del dia es menor que el mas
bajo del año
'el valor mas bajo del dia pasa a ser el mas bajo del año
Range("Z" & i).Value = Range("F" & i).Value
Else
'si no es asi el valor mas bajo del año sigue siendo el del dia
anterior
Range("Z" & i).Value = Range("Z" & i + 1).Value
End If
Else
'es distinto año, el valor mas bajo del año es el valor mas bajo del
dia
Range("Z" & i).Value = Range("f" & i).Value
End If
End Sub

Daros a ambos las gracias por la ayuda!! el hecho de no conseguir el
objetivo no es motivo para apreciar sinceramente vuestro esfuerzo... Thx!!!




"Víctor" escribió en el mensaje
news:051a01c4249b$f0c37a50$
Prueba estas fórmulas matriciales:

{=MAX(SI(A1:A2000>=G2;SI(A1:A2000<=G3;E1:E2000)))}
{=MIN(SI(A1:A2000>=G2;SI(A1:A2000<=G3;F1:F2000)))}

Coloca en G2 1-ene-04 y en G3 31-dic-04

y tendrás los valores máximo y mínimo del año 2004 (los
máximos, según dices, están en la columna E y los mínimos
en la F).

:-)

Cierto y lo siento, por explicarme tan mal
la cuestion es que la hoja se va creando dia a dia y




no podemos
determinar de antemano donde estan los datos.
te pego la macro que hace lo que yo quiero hacer a ver




si ahora me
explico mejor.

Sub minimoAno(ByVal i As Integer)
Range("Z" & i).Select
If Year(Range("A" & i).Value) = Year(Range("A" & i




+ 1).Value)
Then
'es el mismo año
If Range("F" & i).Value < Range("Z" & i +




1).Value Then
'si el valor del precio mas bajo del dia




es menor que
el mas bajo del año
'el valor mas bajo del dia pasa a ser el




mas bajo del
año
Range("Z" & i).Value = Range("F" & i).Value
Else
'si no es asi el valor mas bajo del año




sigue siendo el
del dia anterior
Range("Z" & i).Value = Range("Z" & i +




1).Value
End If
Else
'es distinto año, el valor mas bajo del año es




el valor mas
bajo del dia
Range("Z" & i).Value = Range("f" & i).Value
End If
End Sub

Es esto mismo lo que quiero hacer con una simple




funcion. ¿se
puede?, yo creo que si, pero ya te digo, que no tengo




patatera idea
de como hacerlo.


"fernando" escribió en el




mensaje
news:
>
> Hash: SHA1
>
> Supongamos que los datos del año 2000 esten entre




las filas 5 y 200 y
> que el maximo de ese año lo quiero grabar en la




celda b5. Entonces,
> en esa celda pongo la fórmula max(a5:a200).
> De manera similar para los mínimos y el resto de




años.
>
>
>
>
>
>
> "Jesús Román" <CRISONIA3(texto inactivo)@terra.es>




escribió en el
> mensaje news:6H5gc.4565888




$
> > Hola Fernando!
> >
> >
> > Lo que pretendo es que la funcion me localice el




maximo ANUAL, no
> > un maximo cualquiera... (tiene que determinar las




fechas dentro de
> > cada año) tengo varios años, dia a dia, en la




columna a y quiero
> > que me localice el maximo de cada año de una




columna concreta o
> > valor.
> >
> > ojalá me entiendas ahora!!
> > gracias por tu respuesta
> >
> > "fernando" escribió en el




mensaje
> > news:
> > >
> > > Hash: SHA1
> > >
> > > No está muy claro lo que pretendes.
> > > Si quieres escribir en una celda el valor maximo




de un rango, puedes
> > > utilizar la funcion max(e3:e380) y de manera




equivalente, en otra
> > > celda, puedes grabar el mínimo.
> > >
> > >
> > > "Jesús Román" <CRISONIA3(texto inactivo)




@terra.es> escribió en el
> > > mensaje news:HA2gc.4564211




$
> > > > Hola a todos!
> > > > No hace mucho leí en una de las repuestas como




localizar el maximo
> > > > o minimo para un cierto numero de celdas
> > > > =K.ESIMO.MENOR(f3:f380;1)
> > > > =K.ESIMO.MAYOR(E3:E380;1)
> > > > Me ha servido de gran ayuda, pues para ello




tenia una macro creada
> > > > y esto de ahora me es ma util y hábil
> > > >
> > > > La cuestion es ahora que tambien tengo creada




una macro para
> > > > localizar el maximo y el minimo anual ¿se




podria hacer en lugar de
> > > > con la macro con una formula similar a las




anteriores? las fechas
> > > > las tengo en la columna A (pertenecen a varios




años), los datos
> > > > maximos en la E y los maximos en F
> > > >
> > > > Gracias
> > > >
> > >
> > >
> >
>
>






.

Respuesta Responder a este mensaje
#8 Héctor Miguel
18/04/2004 - 10:28 | Informe spam
hola, chicos !

Jesús Román escribió
... necesito una formula que de una total libertad al programa [...]
... que la funcion me ponga en ... columnas cercanas a donde estan los maximos/minimos y fechas
... los datos mayores y menores correspondientes a cada fecha, pero sacando los datos por años [...]



si 'entiendo bien'... necesitas una tabla con los maximos/minimos y sus 'fechas de ocurrencia' =>por años<suponiendo que el rango de las fechas 'se llama' =>Fechas<= y el de los valores se llama =>Valores<= :))
[a ver si no 'se descuadra' este -intento de- ejemplo]
y suponiendo que la 'tabla' que necesitas tiene un 'arreglo' como el siguiente:
______________________________________________
|___|___D__|____E___|____F___|____G____|____H____|
|_1_|______|_____ Maximo _____|______ Minimo______|
|_2_|_Años_|__Valor__|__Fecha__|__Valor__|__Fecha__|
|_3_|_2002_|
|_4_|_2003_| ...etc...

para 'rescatar' los valores [maximo columna 'E' y minimo columna 'G'] por cada año [en la columna 'D']...
=> es una formula 'matricial' <[en 'E3'] => {=Max(Si(Año(Fechas)Ó,Valores))}
[en 'G3'] => {=Min(Si(Año(Fechas)Ó,Valores))}

para 'rescatar' las fechas que se corresponden a dichos valores [por cada año en la columna 'D']...
=> es una formula 'normal' <[en 'F3'] => =Indice(Fechas,Coindicir(E3,Valores,0))
[en 'H3'] => =Indice(Fechas,Coindicir(G3,Valores,0))
nota: si existen valores 'repetidos' [maximo y/o minimo] en 'varios' años... SOLO 'devuelve' el primero :((
para 'corregir' este detalle, usa 'mejor' la/s siguiente/s formula/s:
[en 'F3'] => =SumaProducto(Fechas*(Año(Fechas)Ó)*(Valoresã))
[en 'H3'] => =SumaProducto(Fechas*(Año(Fechas)Ó)*(Valores=G3))

copia las formulas [de las columnas 'E', 'F', 'G' y 'H'] a tantas filas como años 'tengas' en la/s tabla/s
solo toma en cuena que 'mi' separador de argumentos es la coma ',' NO el punto y coma ';' :))
saludos,
hector.
Respuesta Responder a este mensaje
#9 fernando
18/04/2004 - 11:24 | Informe spam
Hash: SHA1

Excelente solución.


"Héctor Miguel" escribió en el
mensaje news:
hola, chicos !

> Jesús Román escribió
> ... necesito una formula que de una total libertad al programa
> [...] ... que la funcion me ponga en ... columnas cercanas a
> donde estan los maximos/minimos y fechas ... los datos mayores y
> menores correspondientes a cada fecha, pero sacando los datos por
> años [...]

si 'entiendo bien'... necesitas una tabla con los maximos/minimos y
sus 'fechas de ocurrencia' =>por años<= suponiendo que el rango de
las fechas 'se llama' =>Fechas<= y el de los valores se llama
=>Valores<= :)) [a ver si no 'se descuadra' este -intento de-
ejemplo]
y suponiendo que la 'tabla' que necesitas tiene un 'arreglo' como
el siguiente:
______________________________________________
|___|___D__|____E___|____F___|____G____|____H____|
|_1_|______|_____ Maximo _____|______ Minimo______|
|_2_|_Años_|__Valor__|__Fecha__|__Valor__|__Fecha__|
|_3_|_2002_|
|_4_|_2003_| ...etc...

para 'rescatar' los valores [maximo columna 'E' y minimo columna
'G'] por cada año [en la columna 'D']... => es una formula
'matricial' <> [en 'E3'] => {=Max(Si(Año(Fechas)Ó,Valores))}
[en 'G3'] => {=Min(Si(Año(Fechas)Ó,Valores))}

para 'rescatar' las fechas que se corresponden a dichos valores
[por cada año en la columna 'D']... => es una formula 'normal' <> [en 'F3'] => =Indice(Fechas,Coindicir(E3,Valores,0))
[en 'H3'] => =Indice(Fechas,Coindicir(G3,Valores,0))
nota: si existen valores 'repetidos' [maximo y/o minimo] en
'varios' años... SOLO 'devuelve' el primero :(( para 'corregir'
este detalle, usa 'mejor' la/s siguiente/s formula/s: [en 'F3'] =>
=SumaProducto(Fechas*(Año(Fechas)Ó)*(Valoresã))
[en 'H3'] => =SumaProducto(Fechas*(Año(Fechas)Ó)*(Valores=G3))

copia las formulas [de las columnas 'E', 'F', 'G' y 'H'] a tantas
filas como años 'tengas' en la/s tabla/s solo toma en cuena que
'mi' separador de argumentos es la coma ',' NO el punto y coma ';'
:)) saludos,
hector.

Respuesta Responder a este mensaje
#10 Jesús Román
18/04/2004 - 22:36 | Informe spam
Es una buena solucion. No puedo adaptar la hoja, me temo, pues ya está
creada, mas adelante describo como van las columnas, con el año incluido en
la fecha.

Si consigo explicar lo que quiero creo que si lo consigo, me dareis un
tiron de orejas!
ufff, y lo peor es que me deberia de haber conformado con seguir con la
macro que al fin y al cabo hace lo que preciso
Bueno, hago el penultimo intento, arriesgando la oreja.

COLUMNAS
Cada fila es una dia de cotizaciones con sus correspondientes datos
En "A" tengo la fecha completa que incluye dia/mes/año
En "E" y "F" los datos que corresponden a Maximos y Minimos del dia.(por lo
cual buscariamos los maximos anuales en E y los minimos en F)

Lo que deseo conseguir y que no consigo expresar adecuadamente es: En las
celdas "Z" y "AA"
-Si la fecha de hoy es de un año distinto al a la fecha anterior tomar el
dato "E" (maximo de ese dia) y pegarlo en "Z", el dato de "F" (min.) pegarlo
en "AA"
-Si la fecha de hoy es del mismo año que ayer que mire el minimo o maximo
del dia y si es menor o mayor al que ya tenemos previamente en "Z" o "AA"
que ponga el de hoy, y si no se ha superado ninguno de estos datos que
mantenga los del dia previo.

Los datos entran en la fila 3 y los anteriores bajan a la 4 y así
sucesivamente. Aunque supongo que esto no es relevante, pues creo que debo
de pegar la funcion en todas las celdas de las columnas Z y BB


Lamento mucho no acertar en la explicacion adecuada y agradezco la atencion
prestada.
Ya me contareis como queda mi oreja!!
saludos.-

P.D. despues de describirlo hasta me parece facil... aunque ni siquiera sé
si es posible hacerlo!




"Héctor Miguel" escribió en el mensaje
news:
hola, chicos !

> Jesús Román escribió
> ... necesito una formula que de una total libertad al programa [...]
> ... que la funcion me ponga en ... columnas cercanas a donde estan los


maximos/minimos y fechas
> ... los datos mayores y menores correspondientes a cada fecha, pero


sacando los datos por años [...]

si 'entiendo bien'... necesitas una tabla con los maximos/minimos y sus


'fechas de ocurrencia' =>por años<> suponiendo que el rango de las fechas 'se llama' =>Fechas<= y el de los
valores se llama =>Valores<= :))
[a ver si no 'se descuadra' este -intento de- ejemplo]
y suponiendo que la 'tabla' que necesitas tiene un 'arreglo' como el


siguiente:
______________________________________________
|___|___D__|____E___|____F___|____G____|____H____|
|_1_|______|_____ Maximo _____|______ Minimo______|
|_2_|_Años_|__Valor__|__Fecha__|__Valor__|__Fecha__|
|_3_|_2002_|
|_4_|_2003_| ...etc...

para 'rescatar' los valores [maximo columna 'E' y minimo columna 'G'] por


cada año [en la columna 'D']...
=> es una formula 'matricial' <> [en 'E3'] => {=Max(Si(Año(Fechas)Ó,Valores))}
[en 'G3'] => {=Min(Si(Año(Fechas)Ó,Valores))}

para 'rescatar' las fechas que se corresponden a dichos valores [por cada


año en la columna 'D']...
=> es una formula 'normal' <> [en 'F3'] => =Indice(Fechas,Coindicir(E3,Valores,0))
[en 'H3'] => =Indice(Fechas,Coindicir(G3,Valores,0))
nota: si existen valores 'repetidos' [maximo y/o minimo] en 'varios'


años... SOLO 'devuelve' el primero :((
para 'corregir' este detalle, usa 'mejor' la/s siguiente/s formula/s:
[en 'F3'] => =SumaProducto(Fechas*(Año(Fechas)Ó)*(Valoresã))
[en 'H3'] => =SumaProducto(Fechas*(Año(Fechas)Ó)*(Valores=G3))

copia las formulas [de las columnas 'E', 'F', 'G' y 'H'] a tantas filas


como años 'tengas' en la/s tabla/s
solo toma en cuena que 'mi' separador de argumentos es la coma ',' NO el


punto y coma ';' :))
saludos,
hector.

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