Sumar.si con condicion mayor que y menor que

07/12/2005 - 19:43 por pasarin | Informe spam
Hola , tengo que utilizar el sumar.si en VB (SUMIF) y quisiera que me sumase
las celdas cuyo criterio perteneciese a cierto intervalo en lugar de
obligarme a restar dos "sumif", lo que hace el código muy poco legible.
¿cual sería la sintaxis en VB?¿y en la función sumar.si de excel es posible
condicionar a un intervalo?.
Por ejemplo:
ActiveCell.FormulaR1C1 = _
"=SUMIF('bcr2 SAA'!C,""=<1960000"",'bcr2 SAA'!C[2])-SUMIF('bcr2
SAA'!C,""<1900000"",'bcr2 SAA'!C[2])"

Gracias y saludos

Preguntas similare

Leer las respuestas

#1 KL
07/12/2005 - 20:22 | Informe spam
Hola pasarin,

Hasta donde se SUMIF (SUMAR.SI) no permite intervalos como criterio. Dentro de las alternativas que existen la mas eficiente creo
que es la que usas tu (la mas rapida en ejecucion). Tambien entre otras alternativas estan (por orden de rapidez):

=SUM(SUMIF(Rango1,{"<60000","<1900000"},Rango2)*{1,-1})
=SUMPRODUCT(--(Rango1<60000);--(Rango1<1900000);Rango2)
=SUMPRODUCT((Rango1<60000)*(Rango1<1900000)*Rango2)

me imagino que sabras convertirlas en la anotacion R1C1 usando tus rangos concretos (si no, usa la grabadora de macros).

Saludos,
KL




"pasarin" wrote in message news:OAUia41%
Hola , tengo que utilizar el sumar.si en VB (SUMIF) y quisiera que me sumase las celdas cuyo criterio perteneciese a cierto
intervalo en lugar de obligarme a restar dos "sumif", lo que hace el código muy poco legible. ¿cual sería la sintaxis en VB?¿y en
la función sumar.si de excel es posible condicionar a un intervalo?.
Por ejemplo:
ActiveCell.FormulaR1C1 = _
"=SUMIF('bcr2 SAA'!C,""=<1960000"",'bcr2 SAA'!C[2])-SUMIF('bcr2 SAA'!C,""<1900000"",'bcr2 SAA'!C[2])"

Gracias y saludos

Respuesta Responder a este mensaje
#2 Héctor Miguel
08/12/2005 - 05:47 | Informe spam
hola, chicos !

solo dos 'observaciones' con relacion a las propuestas de usar la funcion 'sumproduct'...
-> 1) NO se 'admiten' columnas completas [como 'parece' ser la necesidad de pasarin] ;)
-> 2) [me parece que]... el segundo 'operador de comparacion' [segundo argumento]... necesita cambiarse...
de: '<'
a: '>='

saludos,
hector.
KL escribio en el mensaje ...
... entre otras alternativas estan (por orden de rapidez):
=SUM(SUMIF(Rango1,{"<60000","<1900000"},Rango2)*{1,-1})
=SUMPRODUCT(--(Rango1<60000);--(Rango1<1900000);Rango2)
=SUMPRODUCT((Rango1<60000)*(Rango1<1900000)*Rango2)

pasarin escribio en el mensaje ...
... utilizar el sumar.si en VB (SUMIF) y quisiera que me sumase las celdas cuyo criterio perteneciese a cierto intervalo
en lugar de obligarme a restar dos "sumif", lo que hace el código muy poco legible
cual seria la sintaxis en VB? y en la función sumar.si de excel es posible condicionar a un intervalo?.
Por ejemplo:
ActiveCell.FormulaR1C1 = _
"=SUMIF('bcr2 SAA'!C,""=<1960000"",'bcr2 SAA'!C[2])-SUMIF('bcr2 SAA'!C,""<1900000"",'bcr2 SAA'!C[2])"
Respuesta Responder a este mensaje
#3 KL
08/12/2005 - 14:11 | Informe spam
Hola HM,

Gracias por la primera observacion - no me di cuenta de que eran columnas enteras. Respecto a la segunda - creo que es el primer
signo que debe cambiarse tal como lo hice yo: de =< a <=. Respecto a tu propuesta creo que para encontrar un intervalo ambos signos
deben ser mayor o menor, pero no diferentes.

Saludos,
KL


"Héctor Miguel" wrote in message news:%23gxmDK7%
hola, chicos !

solo dos 'observaciones' con relacion a las propuestas de usar la funcion 'sumproduct'...
-> 1) NO se 'admiten' columnas completas [como 'parece' ser la necesidad de pasarin] ;)
-> 2) [me parece que]... el segundo 'operador de comparacion' [segundo argumento]... necesita cambiarse...
de: '<'
a: '>='

saludos,
hector.
>> KL escribio en el mensaje ...
... entre otras alternativas estan (por orden de rapidez):
=SUM(SUMIF(Rango1,{"<60000","<1900000"},Rango2)*{1,-1})
=SUMPRODUCT(--(Rango1<60000);--(Rango1<1900000);Rango2)
=SUMPRODUCT((Rango1<60000)*(Rango1<1900000)*Rango2)



pasarin escribio en el mensaje ...
... utilizar el sumar.si en VB (SUMIF) y quisiera que me sumase las celdas cuyo criterio perteneciese a cierto intervalo
en lugar de obligarme a restar dos "sumif", lo que hace el código muy poco legible
cual seria la sintaxis en VB? y en la función sumar.si de excel es posible condicionar a un intervalo?.
Por ejemplo:
ActiveCell.FormulaR1C1 = _
"=SUMIF('bcr2 SAA'!C,""=<1960000"",'bcr2 SAA'!C[2])-SUMIF('bcr2 SAA'!C,""<1900000"",'bcr2 SAA'!C[2])"






Respuesta Responder a este mensaje
#4 KL
08/12/2005 - 15:02 | Informe spam
HM,

Si tenias razon con tu segundo comentario - acabo de darme cuenta de que te referias a las formulas que usaban SUMPRODUCT.

Saludos,
KL


"KL" wrote in message news:%23JCSXj$%
Hola HM,

Gracias por la primera observacion - no me di cuenta de que eran columnas enteras. Respecto a la segunda - creo que es el primer
signo que debe cambiarse tal como lo hice yo: de =< a <=. Respecto a tu propuesta creo que para encontrar un intervalo ambos
signos deben ser mayor o menor, pero no diferentes.

Saludos,
KL


"Héctor Miguel" wrote in message news:%23gxmDK7%
hola, chicos !

solo dos 'observaciones' con relacion a las propuestas de usar la funcion 'sumproduct'...
-> 1) NO se 'admiten' columnas completas [como 'parece' ser la necesidad de pasarin] ;)
-> 2) [me parece que]... el segundo 'operador de comparacion' [segundo argumento]... necesita cambiarse...
de: '<'
a: '>='

saludos,
hector.
>>> KL escribio en el mensaje ...
... entre otras alternativas estan (por orden de rapidez):
=SUM(SUMIF(Rango1,{"<60000","<1900000"},Rango2)*{1,-1})
=SUMPRODUCT(--(Rango1<60000);--(Rango1<1900000);Rango2)
=SUMPRODUCT((Rango1<60000)*(Rango1<1900000)*Rango2)



pasarin escribio en el mensaje ...
... utilizar el sumar.si en VB (SUMIF) y quisiera que me sumase las celdas cuyo criterio perteneciese a cierto intervalo
en lugar de obligarme a restar dos "sumif", lo que hace el código muy poco legible
cual seria la sintaxis en VB? y en la función sumar.si de excel es posible condicionar a un intervalo?.
Por ejemplo:
ActiveCell.FormulaR1C1 = _
"=SUMIF('bcr2 SAA'!C,""=<1960000"",'bcr2 SAA'!C[2])-SUMIF('bcr2 SAA'!C,""<1900000"",'bcr2 SAA'!C[2])"









Respuesta Responder a este mensaje
#5 pasarin
09/12/2005 - 18:54 | Informe spam
Gracias a todos, me ha ido bien con la primera opcion, pero ahora intento
dar con la sintaxis que tendria para que no fuese entre dos constantes sino
entre el valor de una celda referenciada con formato RC y no acabo de dar
con el tema , ?me podriais escribir como seria la sintaxis si en vez querer
sumar entre 1900000 y 1960000 fuese entre RC[-1]*100000 y
(RC[-1]*10000+60000)?

Gracias y saludos

"KL" escribio en el mensaje
news:ucN07$$%
HM,

Si tenias razon con tu segundo comentario - acabo de darme cuenta de que
te referias a las formulas que usaban SUMPRODUCT.

Saludos,
KL


"KL" wrote in message
news:%23JCSXj$%
Hola HM,

Gracias por la primera observacion - no me di cuenta de que eran columnas
enteras. Respecto a la segunda - creo que es el primer signo que debe
cambiarse tal como lo hice yo: de =< a <=. Respecto a tu propuesta creo
que para encontrar un intervalo ambos signos deben ser mayor o menor,
pero no diferentes.

Saludos,
KL


"Héctor Miguel" wrote in message
news:%23gxmDK7%
hola, chicos !

solo dos 'observaciones' con relacion a las propuestas de usar la
funcion 'sumproduct'...
-> 1) NO se 'admiten' columnas completas [como 'parece' ser la necesidad
de pasarin] ;)
-> 2) [me parece que]... el segundo 'operador de comparacion' [segundo
argumento]... necesita cambiarse...
de: '<'
a: '>='

saludos,
hector.
>>>> KL escribio en el mensaje ...
... entre otras alternativas estan (por orden de rapidez):
=SUM(SUMIF(Rango1,{"<60000","<1900000"},Rango2)*{1,-1})
=SUMPRODUCT(--(Rango1<60000);--(Rango1<1900000);Rango2)
=SUMPRODUCT((Rango1<60000)*(Rango1<1900000)*Rango2)



pasarin escribio en el mensaje ...
... utilizar el sumar.si en VB (SUMIF) y quisiera que me sumase las
celdas cuyo criterio perteneciese a cierto intervalo
en lugar de obligarme a restar dos "sumif", lo que hace el código muy
poco legible
cual seria la sintaxis en VB? y en la función sumar.si de excel es
posible condicionar a un intervalo?.
Por ejemplo:
ActiveCell.FormulaR1C1 = _
"=SUMIF('bcr2 SAA'!C,""=<1960000"",'bcr2 SAA'!C[2])-SUMIF('bcr2
SAA'!C,""<1900000"",'bcr2 SAA'!C[2])"












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