jbf99";p="37799 escribió:KL";p="37782 escribió:
se podria acortar un poco esta ultima ya que no hay necesidad de usar SUMAPRODUCTO si la formula es de entrada matricial igualmente:
{=SUMA(($A$2:$A$9&$B$2:$B$9=MAX(SI($B$2:$B$9=F7;$A$2:$A$9))&F7)*($D$2:$D$9))}
Me surge una duda, todo este tipo de formulas suelen funcionar y dar el mismo resultado con multiples de las formulas basicas , es decir, funcionan aparentemente igual poniendo suma , max , min , promedio , sumaproducto , etc.... , pero ¿Excel las calcula todas a la misma velocidad o existen formulas basicas q se calculan apreciablemente mas rapidas que otras , y de ser asi ¿cuales son las formulas que debemos primar y cuales evitar?
Un saludo
Hola jbf99,
En principio, GALI ya ha indicado una fuente de conocimiento importante (cuaidado que la interfaz de usuario es malisima y muchos vinculos pasan facilmente desapercibidos - estan todos en la parte de arriba de las paginas) sobre el desempeño de las formulas en Excel 97-2003 (!!!).
Aparientemente en Excel 2007 este tema ha cambiado radicalmente (como rezaba el himno de la 3ra Internacional: El que no ha sido nada, lo sera todo). Algunas formulas dan resultados espectaculares en 2007 mientras que siempre han sido bastante lentas en 2003. Tengo ya unos cuantos ejemplos. Para XL2007 Charles Williams ha redactado un nuevo articulo: http://msdn2.microsoft.com/en-us/library/aa730921.aspx
Siguiendo con las versiones anteriores a la 2007, y especialmente con la 2003, ademas de lo expuesto en la pagina de C.Williams, y en base a mis observaciones empiricas y la informacion recogida de otros usuarios creo que se podria hacer las siguientes afirmaciones:
1) las funciones introducidas de forma matricial (CTRL+SHIFT+ENTER) suelen ser aproximadamente un 20% mas lentas que sus analogos con SUMAPRODUCTO
2) por otro lado, las funciones introducidas de forma matricial (CTRL+SHIFT+ENTER) no hacen crecer el tamaño del archivo tanto como sus analogos con SUMAPRODUCTO
3) la concatenacion siempre es bastante mas lenta que las construcciones del tipo SI(...;...;...)
4) en las busquedas simples (con pocas condiciones) las funciones CONTAR.SI, SUMAR.SI, BUSCARV, BUSCARH, BUSCAR, COINCIDIR son mucho mas rapidas que sus analogos realizados con la construccion SUMAPRODUCTO()
5) dentro de la funcion SUMAPRODUCTO la sintaxis mas rapida en recalculo es la SUMAPRODUCTO(--(...);--(...);...). Parece mentira, pero lo es incluso comparado con SUMAPRODUCTO(0+(...);0+(...);...) aunque 0+ sea solo una operacion y -- son dos.
6) a pesar de lo que, al parecer, se puede concluir de las explicaciones de C.Williams, la construccion SUM(ESNUMERO(COINCIDIR())) es aproximadamente un 15-20% mas rapida en rangos extensos que CONTAR.SI().
7) hay que tener en cuenta que las funciones de busqueda exacta COINCIDIR(...,...,0), BUSCARV(...,...,...,0), etc. buscan las coincidencias yendo desde arriba hacia abjo celda por celda hasta encontrar lo buscado, mientras que las de busqueda aproximada utilizan algo muy parecido la busqueda binaria (o sea van como un pendulo de un extremo a otro para reducir el numero de las posibles busquedas en una lista ordenada hasta el maximo de 17 intentos en 65536 celdas, eso si no tropieza con el valor buscado antes). Curiosamente debido a estos comportamientos, se puede dar la paradoja de que si tenemos datos en las celdas digamos A1:A10 y el dato exacto que vamos a buscar esta ahi, la formula COINCIDIR(nuestrodato;A1:A65536;0) es mas rapida con mucha diferencia que COINCIDIR(nuestrodato;A1:A65536). Obviamente, si quitamos nuestro dato buscado de la lista, la segunda empieza a adelantarse.
8) la funcion FRECUENCIA es veces mas rapida que CONTAR.SI pero es muy "cabrona" con su ultimo elemento adicional en la matriz devuelta como resultado.
Son algunas ideas [un poco caoticas eso si] que se me han ocurrido en relacion a la pregunta.




