Simplificar formula

13/07/2005 - 21:27 por JACS | Informe spam
Hola, desearia saber como simplificar lo siguiente:

SUMAR.SI(D10:AH10;9)/9*1+SUMAR.SI(D10:AH10;10)/10*2+SUMAR.SI(D10:AH10;11)/11*2+SUMAR.SI(D10:AH10;12)/12*2+SUMAR.SI(D10:AH10;13)/13*2+SUMAR.SI(D10:AH10;14)/14*2+SUMAR.SI(D10:AH10;15)/15*2+SUMAR.SI(D10:AH10;16)/16*2

Preguntas similare

Leer las respuestas

#1 KL
13/07/2005 - 23:32 | Informe spam
Hola JACS,

A mi me parece algo asi:

=SUMAPRODUCTO(CONTAR.SI(D10:AH10;FILA($9:$16))*{1\2\2\2\2\2\2\2})

asi:

=CONTAR.SI(D10:AH10;9)+SUMAPRODUCTO(CONTAR.SI(D10:AH10;FILA($10:$16)))*2

o asi:

=CONTAR.SI(D10:AH10;9)+SUMAPRODUCTO(CONTAR.SI(D10:AH10;{10\11\12\13\14\15\16}))*2

Saludos,
KL


"JACS" wrote in message
news:
Hola, desearia saber como simplificar lo siguiente:

SUMAR.SI(D10:AH10;9)/9*1+SUMAR.SI(D10:AH10;10)/10*2+SUMAR.SI(D10:AH10;11)/11*2+SUMAR.SI(D10:AH10;12)/12*2+SUMAR.SI(D10:AH10;13)/13*2+SUMAR.SI(D10:AH10;14)/14*2+SUMAR.SI(D10:AH10;15)/15*2+SUMAR.SI(D10:AH10;16)/16*2
Respuesta Responder a este mensaje
#2 Héctor Miguel
14/07/2005 - 08:18 | Informe spam
hola, chicos !

JACS escribio en el mensaje ...
... como simplificar lo siguiente:
SUMAR.SI(D10:AH10;9)/9*1+SUMAR.SI(D10:AH10;10)/10*2+SUMAR.SI(D10:AH10;11)/11*2+SUMAR.SI(D10:AH10;12)/12*2+SUMAR.SI(D10:AH10;13)/13*2+SUMAR.SI(D10:AH10;14)/14*2+SUMAR.SI(D10:AH10;15)/15*2+SUMAR.SI(D10:AH10;16)/16*2

KL escribio en el mensaje ...
... me parece algo asi:
=SUMAPRODUCTO(CONTAR.SI(D10:AH10;FILA($9:$16))*{1\2\2\2\2\2\2\2})
asi:
=CONTAR.SI(D10:AH10;9)+SUMAPRODUCTO(CONTAR.SI(D10:AH10;FILA($10:$16)))*2
o asi:
=CONTAR.SI(D10:AH10;9)+SUMAPRODUCTO(CONTAR.SI(D10:AH10;{10\11\12\13\14\15\16}))*2





<solo como un 'granito de arena' -tratando de aportar algo- mas> :D
[segun se puede apreciar]... aunque la primera alternativa es la mas 'delgada'...
-> 'falla' si se insertan filas 'intermedias' [entre las filas 9 y 16] :-(
[habria que sustituir los argumentos de la funcion fila() por un 'indirecto' o... cambiar a 'matriz constante'] ;)
-> [para este caso en concreto]... la funcion contar.si ->dentro<- de la funcion sumaproducto no es 'necesaria' ;)
[se puede 'recortar' a: sumaproducto((d10:ah10=fila(. ]
las alterntivas 2 y 3 [la misma 'para efectos practicos']...
-> no tienen 'la falla' al insertar filas :))
-> considerando la 'no necesidad' del contar.si con el sumaproducto... puede ser 'tan delgada' como la primera [p.e.]
=contar.si(d10:ah10;9)+sumaproducto((d10:ah10=fila(10:16))*2)
[si se requiere que las referencias sean 'semi'-absolutas/relativas... o 'constantes'... ya dependera de 'la situacion' ;)

saludos,
hector.
Respuesta Responder a este mensaje
#3 KL
15/07/2005 - 02:12 | Informe spam
Hola HM,

Como siempre, agradezco tus comentarios y estoy de acuerdo con todos...
bueno casi todos :-) Para el ejemplo que nos ocupa la rapidez de la formuula
no parece tener mucha importancia (aunque no sabemos a cuantas filas/hojas
se copiaria la formula o si tambien podria ser usada en rangos verticales
extensos) pero en el afan de recortar las formulas no nos olvidemos de que
la version:

=CONTAR.SI(D10:AH10;9)+SUMAPRODUCTO(CONTAR.SI(D10:AH10;FILA($10:$16)))*2

es aproximadamente 9 veces (800%) mas rapida que la version:

=CONTAR.SI(D10:AH10;9)+SUMAPRODUCTO((D10:AH10=FILA($10:$16))*2)

O sea, copiadas al rango [A10:A65536] la primera tarda ~1 segundo y la
segunda ~9 segundos mientras que el ahorro es de 10 caracteres.

Saludos,
KL



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

JACS escribio en el mensaje ...
... como simplificar lo siguiente:
SUMAR.SI(D10:AH10;9)/9*1+SUMAR.SI(D10:AH10;10)/10*2+SUMAR.SI(D10:AH10;11)/11*2+SUMAR.SI(D10:AH10;12)/12*2+SUMAR.SI(D10:AH10;13)/13*2+SUMAR.SI(D10:AH10;14)/14*2+SUMAR.SI(D10:AH10;15)/15*2+SUMAR.SI(D10:AH10;16)/16*2



KL escribio en el mensaje ...
... me parece algo asi:
=SUMAPRODUCTO(CONTAR.SI(D10:AH10;FILA($9:$16))*{1\2\2\2\2\2\2\2})
asi:
=CONTAR.SI(D10:AH10;9)+SUMAPRODUCTO(CONTAR.SI(D10:AH10;FILA($10:$16)))*2
o asi:
=CONTAR.SI(D10:AH10;9)+SUMAPRODUCTO(CONTAR.SI(D10:AH10;{10\11\12\13\14\15\16}))*2





<solo como un 'granito de arena' -tratando de aportar algo- mas> :D
[segun se puede apreciar]... aunque la primera alternativa es la mas
'delgada'...
-> 'falla' si se insertan filas 'intermedias' [entre las filas 9 y 16] :-(
[habria que sustituir los argumentos de la funcion fila() por un
'indirecto' o... cambiar a 'matriz constante'] ;)
-> [para este caso en concreto]... la funcion contar.si ->dentro<- de la
funcion sumaproducto no es 'necesaria' ;)
[se puede 'recortar' a: sumaproducto((d10:ah10=fila(. ]
las alterntivas 2 y 3 [la misma 'para efectos practicos']...
-> no tienen 'la falla' al insertar filas :))
-> considerando la 'no necesidad' del contar.si con el sumaproducto...
puede ser 'tan delgada' como la primera [p.e.]
=contar.si(d10:ah10;9)+sumaproducto((d10:ah10=fila(10:16))*2)
[si se requiere que las referencias sean 'semi'-absolutas/relativas...
o 'constantes'... ya dependera de 'la situacion' ;)

saludos,
hector.

Respuesta Responder a este mensaje
#4 Héctor Miguel
15/07/2005 - 03:08 | Informe spam
hola, KL !

... Para el ejemplo que nos ocupa la rapidez de la formuula no parece tener mucha importancia


=>(aunque no sabemos a cuantas filas/hojas se copiaria la formula o...] <> ... pero en el afan de recortar las formulas no nos olvidemos de que la version:
=CONTAR.SI(D10:AH10;9)+SUMAPRODUCTO(CONTAR.SI(D10:AH10;FILA($10:$16)))*2
es aproximadamente 9 veces (800%) mas rapida que la version:
=CONTAR.SI(D10:AH10;9)+SUMAPRODUCTO((D10:AH10=FILA($10:$16))*2)
... copiadas al rango [A10:A65536] la primera tarda ~1 segundo y la segunda ~9 segundos
... mientras que el ahorro es de 10 caracteres.



entre 1 segundo que se toma una version de formula 'versus' 9 segundos que le toma a la otra...
[ciertamente que] existe una diferencia [aunque no 'mortal'... SI] 'abismal' :-( [aunque]...
no tengo la menor idea de cuales hubieran sido [si 'iguales'] las circunstancias de las pruebas entre formulas -?-
corri pruebas ->en igualdad de circunstancias<- copiando tambien los datos 'crudos' en los rangos [D10:AH65536]...
y las formulas 'en discusion'... una al rango [A10:A65536] y la otra al rango [B10:B65536] =>una columna por vez<la macro que utilize para las peruebas es la siguiente:
Sub Tardanzas()
Application.ScreenUpdating = False
[a1] = Time
[a10].Copy [a11:a65536]
Calculate
[a2] = Time
[a11:a65536].ClearContents
[b1] = Time
[b10].Copy [b11:b65536]
Calculate
[b2] = Time
[b11:b65536].ClearContents
[a5] = [a2] - [a1]
[b5] = [b2] - [b1]
End Sub

los resultados [ejecutando la macro en repetidas ocasiones] -siempre- fueron que...
-> la formula 'mas rapida'... se tomo 7 segundos :D
-> la formula 'mas lenta'... se tomo 12 segundos :-(
-> la 'ventaja' ->en igualdad de circunstancias<- es de SOLO un 58%
[y son 5 'vitales' segundos... en una 'matriz' de 2'013,337 datos 'crudos' y 65,526 formulas] ;)
'bastante lejos' del 800% que mencionas :-(
[repito: 'no tengo la menor idea de cuales hubieran sido [si 'iguales'] las circunstancias...']

saludos,
hector.
Respuesta Responder a este mensaje
#5 KL
15/07/2005 - 10:43 | Informe spam
Hola HM,

Alucino! Solo para informacion (es dificil discutir en desigualdad de
condiciones :-)) tu codigo me da persistentemente 1 vs 9 o 1 vs 8 si
sustituyo los "brakets" ([]) por la notacion de rango normal
(Range("..."))se gana un segundo aproximadamente. Curiosamente, si aumento
el rango a tres columnas enteras, la diferencia es menor 5 vs 32 y 4 vs 30.

Saludos,
KL


"Héctor Miguel" wrote in message
news:
hola, KL !

... Para el ejemplo que nos ocupa la rapidez de la formuula no parece
tener mucha importancia


=>(aunque no sabemos a cuantas filas/hojas se copiaria la formula o...] <>> ... pero en el afan de recortar las formulas no nos olvidemos de que la
version:
=CONTAR.SI(D10:AH10;9)+SUMAPRODUCTO(CONTAR.SI(D10:AH10;FILA($10:$16)))*2
es aproximadamente 9 veces (800%) mas rapida que la version:
=CONTAR.SI(D10:AH10;9)+SUMAPRODUCTO((D10:AH10=FILA($10:$16))*2)
... copiadas al rango [A10:A65536] la primera tarda ~1 segundo y la
segunda ~9 segundos
... mientras que el ahorro es de 10 caracteres.



entre 1 segundo que se toma una version de formula 'versus' 9 segundos que
le toma a la otra...
[ciertamente que] existe una diferencia [aunque no 'mortal'... SI]
'abismal' :-( [aunque]...
no tengo la menor idea de cuales hubieran sido [si 'iguales'] las
circunstancias de las pruebas entre formulas -?-
corri pruebas ->en igualdad de circunstancias<- copiando tambien los datos
'crudos' en los rangos [D10:AH65536]...
y las formulas 'en discusion'... una al rango [A10:A65536] y la otra al
rango [B10:B65536] =>una columna por vez<> la macro que utilize para las peruebas es la siguiente:
Sub Tardanzas()
Application.ScreenUpdating = False
[a1] = Time
[a10].Copy [a11:a65536]
Calculate
[a2] = Time
[a11:a65536].ClearContents
[b1] = Time
[b10].Copy [b11:b65536]
Calculate
[b2] = Time
[b11:b65536].ClearContents
[a5] = [a2] - [a1]
[b5] = [b2] - [b1]
End Sub

los resultados [ejecutando la macro en repetidas ocasiones] -siempre-
fueron que...
-> la formula 'mas rapida'... se tomo 7 segundos :D
-> la formula 'mas lenta'... se tomo 12 segundos :-(
-> la 'ventaja' ->en igualdad de circunstancias<- es de SOLO un 58%
[y son 5 'vitales' segundos... en una 'matriz' de 2'013,337 datos
'crudos' y 65,526 formulas] ;)
'bastante lejos' del 800% que mencionas :-(
[repito: 'no tengo la menor idea de cuales hubieran sido [si 'iguales']
las circunstancias...']

saludos,
hector.

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