Duda sobre rapidez y recursos

21/03/2006 - 16:51 por Findeo | Informe spam
Tengo una duda sobre cómo es mejor y más rápido realizar ciertas operaciones
que estoy realizando en una hoja de cálculo bastante extensa y con bastantes
macros.
El caso es que tengo algunas funciones, bastante sencillas, desarrolladas
como funciones de usuario en macros. Sin embargo, también lo puedo hacer
definiéndola dentro de la definición de nombres.
Esto no lo tengo del todo claro, pues no se si la utilización de nombre
consume más recursos o, por el contrario, el hacerlo a base de macros es más
lento y utiliza más recursos que de la otra forma.

¿Sabría alguien en este foro cual es el mejor sistema?

Un saludo,

FindeO

Preguntas similare

Leer las respuestas

#1 KL
21/03/2006 - 20:44 | Informe spam
Hola Findeo,

Como regla general las formulas que usan funciones de hoja de calculo son muuuuuucho mas rapidas que las que usan las definidas en VBA. Normalmente las funciones hechas en VBA se usan si :

1) no existe forma eficiente de realizar el calculo (eficiencia no significa necesariamente brevedad en una formula). Estas situaciones son mas bien escasas.
2) si se quiere evitar la volatilidad de algunas funciones que podrian desencadenar un recalculo general en hojas muy cargadas de formulas.

Los nombres definidos en hoja (menu Insertar>Nombre>Definir...) en general consumen los mismos recursos y son igual de rapidas que las formulas normales. Sin embargo, pueden jugar un papel vital en al menos los siguientes casos:

1) cuando por alguna razon (normalmente la estetica) se quiere ahorrar espacio en hoja - no se quiere usar formulas o constantes en celdas.
2) cuando se buscan formulas mas cortas (el limite es de 1024 caractreres en celda) y mas inteligibles (los nombres suelen ser mas explicativos que las referencias a rangos)
3) cuando el resultado de un calculo se usa en varias formulas o instancias dentro de una formula para evitar repeticiones y recalculos inecesarios (o sea como una variable). Puedes meter tablas enteras en forma de matrices fijas, formulas o rangos.
4) para usar rangos ahi donde de lo contrario no se podrian usar, p.ej. los rangos en otra hoja solo son admitidos por la Validadcion de datos en celda atraves de un nombre, etc.
5) algunos otros

Cada una de las formas tiene sus ventajas/desventajas y para darte una respuesta concreta habria que ver la situacion concreta y mejor en detalle: datos, formulas usadas, etc.

Tambien te recomiendo (muy insistentemente :-)) que revises la siguiente web prestando mucha atencion a todos los enlaces de la parte de arriba de la hoja:

http://www.decisionmodels.com/optspeed.htm

de hecho te recomiendo que estudies toda la web ya que regalan un monton de informacion que no la encuentras en ningun otro sitio:

http://www.decisionmodels.com/

Para mi esta web es lo mejor que hay sobre la optimizacion de calculos.

Ademas, si tu fichero es para uso en empresa te recomendaria que compres la herramienta FastExcel que vende dicha web:

http://www.decisionmodels.com/fxlfaq.htm

Saludos,
KL


"Findeo" wrote in message news:
Tengo una duda sobre cómo es mejor y más rápido realizar ciertas operaciones
que estoy realizando en una hoja de cálculo bastante extensa y con bastantes
macros.
El caso es que tengo algunas funciones, bastante sencillas, desarrolladas
como funciones de usuario en macros. Sin embargo, también lo puedo hacer
definiéndola dentro de la definición de nombres.
Esto no lo tengo del todo claro, pues no se si la utilización de nombre
consume más recursos o, por el contrario, el hacerlo a base de macros es más
lento y utiliza más recursos que de la otra forma.

¿Sabría alguien en este foro cual es el mejor sistema?

Un saludo,

FindeO
Respuesta Responder a este mensaje
#2 Findeo
22/03/2006 - 09:06 | Informe spam
Buenos días, KL.
En primer lugar muchas gracias por la respuesta y por la amplitud de la misma.

Voy a echar un vistazo a la página que me comentas (la verdad es que hace ya
bastante tiempo la estuve mirando, pero ni me acordaba de ella).

La duda me ha surgido porque últimamente estoy trabajando bastante con
Nombres y tenía intención de quitar alguna función sencilla hecha en VBA y
hacerlo mediante Definir Nombre.

Por otro lado, he estado repasando el foro, y no veo que se haya comentado
la forma de utilizar un nombre definido en la hoja de cálculo en macro. Es
decir, si yo defino un nombre, por ejemplo BusAC que es una fórmula
matricial, y quiero utilizarlo dentro de macros, ¿cómo hago para poder
extraer alguno de sus valores? Este nombre está definido como
=(--SI(ESERROR(ENCONTRAR("/";Datos!$K$27:$K$47));0;DERECHA(Datos!$K$27:$K$47;LARGO(Datos!$K$27:$K$47)-ENCONTRAR("/";Datos!$K$27:$K$47))))
y yo deseo poder ver cada uno de sus valores desde código VBA. ¿Debo
declarar este valor (BusAC) como nombre? ¿Cómo indico que se trata de un
vector?

En fin, dudas muy elementales, pero que me están costando tiempo encontrar
la solución.

Bueno, agradezco la respuesta obtenida nuevamente, y quedo a la espera de
que alguien me pueda echar una mano.

Un saludo,

FindeO


"KL" escribió:

Hola Findeo,

Como regla general las formulas que usan funciones de hoja de calculo son muuuuuucho mas rapidas que las que usan las definidas en VBA. Normalmente las funciones hechas en VBA se usan si :

1) no existe forma eficiente de realizar el calculo (eficiencia no significa necesariamente brevedad en una formula). Estas situaciones son mas bien escasas.
2) si se quiere evitar la volatilidad de algunas funciones que podrian desencadenar un recalculo general en hojas muy cargadas de formulas.

Los nombres definidos en hoja (menu Insertar>Nombre>Definir...) en general consumen los mismos recursos y son igual de rapidas que las formulas normales. Sin embargo, pueden jugar un papel vital en al menos los siguientes casos:

1) cuando por alguna razon (normalmente la estetica) se quiere ahorrar espacio en hoja - no se quiere usar formulas o constantes en celdas.
2) cuando se buscan formulas mas cortas (el limite es de 1024 caractreres en celda) y mas inteligibles (los nombres suelen ser mas explicativos que las referencias a rangos)
3) cuando el resultado de un calculo se usa en varias formulas o instancias dentro de una formula para evitar repeticiones y recalculos inecesarios (o sea como una variable). Puedes meter tablas enteras en forma de matrices fijas, formulas o rangos.
4) para usar rangos ahi donde de lo contrario no se podrian usar, p.ej. los rangos en otra hoja solo son admitidos por la Validadcion de datos en celda atraves de un nombre, etc.
5) algunos otros

Cada una de las formas tiene sus ventajas/desventajas y para darte una respuesta concreta habria que ver la situacion concreta y mejor en detalle: datos, formulas usadas, etc.

Tambien te recomiendo (muy insistentemente :-)) que revises la siguiente web prestando mucha atencion a todos los enlaces de la parte de arriba de la hoja:

http://www.decisionmodels.com/optspeed.htm

de hecho te recomiendo que estudies toda la web ya que regalan un monton de informacion que no la encuentras en ningun otro sitio:

http://www.decisionmodels.com/

Para mi esta web es lo mejor que hay sobre la optimizacion de calculos.

Ademas, si tu fichero es para uso en empresa te recomendaria que compres la herramienta FastExcel que vende dicha web:

http://www.decisionmodels.com/fxlfaq.htm

Saludos,
KL


"Findeo" wrote in message news:
> Tengo una duda sobre cómo es mejor y más rápido realizar ciertas operaciones
> que estoy realizando en una hoja de cálculo bastante extensa y con bastantes
> macros.
> El caso es que tengo algunas funciones, bastante sencillas, desarrolladas
> como funciones de usuario en macros. Sin embargo, también lo puedo hacer
> definiéndola dentro de la definición de nombres.
> Esto no lo tengo del todo claro, pues no se si la utilización de nombre
> consume más recursos o, por el contrario, el hacerlo a base de macros es más
> lento y utiliza más recursos que de la otra forma.
>
> ¿Sabría alguien en este foro cual es el mejor sistema?
>
> Un saludo,
>
> FindeO

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida