¿Como puedo simplificar esta formula?

23/05/2006 - 01:08 por vm_tapia | Informe spam
Saludos a todos, tengo el siguiente problema:

1.- tengo un archivo con informacion para elaborar las facturas
2.- en una hoja tengo los datos del cliente, concepto de la factura y totales
3.- en otra hoja tengo el detalle de la factura estructurado de la siguiente
manera<-- aqui es donde tengo el problema

A B C D E
F G
1 folio cantidad descripcion precio cantidad
descripcion precio
2 12345 1 venta 10.00 2
venta 12.00
3 12346 10 venta 10.00 15
venta 15.00

Problema:

1.- en la hoja donde tengo los datos en resumen, obtengo el sub-total a
facturar por medio de la siguiente formula:

=(b1*d1)+(e1*g1)+(h1*j1)...

como ven es una formula demasiado larga, ya que tengo 32 partidas y no he
encontrado la manera de "compactar" la formula y al tener mas de 500 lineas
con informacion de facturas, al actualizar un valor en cualquier celda, tarda
una eternidad en actualizar el recalculo de la hoja.

Gracias por su ayuda.

Espero haberme explicado correctamente.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
23/05/2006 - 06:26 | Informe spam
hola, vm_tapia !

... un archivo con informacion para elaborar las facturas
... en una hoja tengo los datos del cliente, concepto de la factura y totales
... en otra hoja tengo el detalle de la factura estructurado de la siguiente manera <-- aqui es donde tengo el problema
A B C D E F G
1 folio cantidad descripcion precio cantidad descripcion precio
2 12345 1 venta 10.00 2 venta 12.00
3 12346 10 venta 10.00 15 venta 15.00
... en la hoja donde tengo los datos en resumen, obtengo el sub-total a facturar por medio de la siguiente formula:
=(b1*d1)+(e1*g1)+(h1*j1)...
... es una formula demasiado larga, ya que tengo 32 partidas y no he encontrado la manera de "compactar" la formula
... al tener mas de 500 lineas... al actualizar un valor en cualquier celda, tarda una eternidad... el recalculo de la hoja.
Espero haberme explicado correctamente.



[a veces... como que] me gusta 'complicarme la existencia' :))
ve si los siguientes 'apuntes' [al menos] se acercan a la solucion que buscas [al menos en tanto se 'simplifica' mas] :D
y... si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

1) considerando que las formulas que expones son de las 'elementales' [sumas y multiplicaciones] :)
es muy probable que 'la eternidad' en el re/calculo del modelo se deba a otros 'factores' -?-
[como el 'arbol' de dependencias y -quizas- el uso de 'otras' formulas o caracteristicas mas... 'consume-recursos'] -?-

-> por si las dudas... visita sitios que 'tratan' de problemas de memoria y 'rendimiento' en excel:
1 [David McRitchie] http://www.mvps.org/dmcritchie/excel/slowresp.htm
2 [Charles Williams] http://www.DecisionModels.com/memlimitsc.htm

2) para 'simplificar' la formula que expones [que no te aseguro que 'quede' mas 'leible/entendible/facil de digerir/...']
una alternativa seria [el 'equivalente' a]... 'filtrar' cada fila_rango por sus columnas -> en grupos de 3 -> partiendo de la columna 'B'
lo cual [solo] es posible utilizando la funcion subtotales y 'metiendo' la funcion desref como su segundo argumento [la referencia]

3) suponiendo que la primer fila con datos es la fila 2, utiliza la siguiente formula en la celda donde necesitas 'el total'...
=sumaproducto(subtotales(9,desref(b2,,fila(indirecto("1:3"))*3-3)),subtotales(9,desref(b2,,fila(indirecto("1:3"))*3-1)))

[solo toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';'] :D

4) la 'explicacion' de [o un intento por explicar] la formula seria la siguiente:
[p.e.] en la formula que expones, existen [o se aprecian]...
a) 3 grupos de columnas con 'cantidad' [B, E y H] y 3 grupos de columnas con 'precios' [D, G y J]
-> en la formula estan 'referenciados' [los grupos] en la llamada a la funcion -> fila(indirecto("1:3"))
[si tienes mas de tres grupos, modifica el 'indirecto' a los grupos necesarios ["1:4", "1:5", "1:6", etc.]
b) hay dos columnas 'de distancia' entre cantidad/es y precio/s [B->D, E->G, H->J, etc. etc. etc.]
-> para 'tomar' las columnas de cantidad [B, D y H] la primera funcion desref se desplaza 0, 3 y 6 columnas [*3-3]
-> para 'tomar' las columnas de precio [D, G y J] la segunda funcion desref se desplaza 2, 5 y 8 columnas [*3-1]
-> la funcion externa sumaproducto se encarga de multiplicar 'cada quien con su cada cual' [cantidad*precio] :))
Respuesta Responder a este mensaje
#2 Héctor Miguel
23/05/2006 - 09:53 | Informe spam
hola [de nuevo], vm_tapia !

3) suponiendo que la primer fila con datos es la fila 2, utiliza la siguiente formula en la celda donde necesitas 'el total'...
=sumaproducto(subtotales(9,desref(b2,,fila(indirecto("1:3"))*3-3)),subtotales(9,desref(b2,,fila(indirecto("1:3"))*3-1)))



-> otra alternativa a la formula anterior [solo que resulta en una formula 'matricial'] es la siguiente:
=suma(si(residuo(columna(b2:h2),3)=2,b2:h2)*si(residuo(columna(d2:j2),3)=1,d2:j2))

-> el 'detalle' es que 'necesitas' hacer el 'desplazamiento' de las columnas cantidad y precio de forma 'manual' :))
primera parte: incluye columnas con titulo de cantidad: -> columna(b2:h2)
segunda parte: incluye columnas con titulo de precio: -> columna(d2:j2)

-> la 'velocidad' en el re/calculo de las formulas anteriores es -practicamente- 'la misma' [variaciones 'menores'] :))
la cantidad de formulas que uses en el modelo [y quizas las 'otras' que pudieran existir]...
es lo que pudiera 'alentar' cada re/calculo -?- [revisa los enlaces sugeridos] ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#3 vm_tapia
23/05/2006 - 17:12 | Informe spam
Gracias por tu ayuda Hector, voy a probar tu solucion y te aviso del resultado.

"Héctor Miguel" wrote:

hola [de nuevo], vm_tapia !

> 3) suponiendo que la primer fila con datos es la fila 2, utiliza la siguiente formula en la celda donde necesitas 'el total'...
> =sumaproducto(subtotales(9,desref(b2,,fila(indirecto("1:3"))*3-3)),subtotales(9,desref(b2,,fila(indirecto("1:3"))*3-1)))

-> otra alternativa a la formula anterior [solo que resulta en una formula 'matricial'] es la siguiente:
=suma(si(residuo(columna(b2:h2),3)=2,b2:h2)*si(residuo(columna(d2:j2),3)=1,d2:j2))

-> el 'detalle' es que 'necesitas' hacer el 'desplazamiento' de las columnas cantidad y precio de forma 'manual' :))
primera parte: incluye columnas con titulo de cantidad: -> columna(b2:h2)
segunda parte: incluye columnas con titulo de precio: -> columna(d2:j2)

-> la 'velocidad' en el re/calculo de las formulas anteriores es -practicamente- 'la misma' [variaciones 'menores'] :))
la cantidad de formulas que uses en el modelo [y quizas las 'otras' que pudieran existir]...
es lo que pudiera 'alentar' cada re/calculo -?- [revisa los enlaces sugeridos] ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.



Respuesta Responder a este mensaje
#4 vm_tapia
23/05/2006 - 20:33 | Informe spam
Hector Miguel:

Gracias ¡ERES MI IDOLO!

Tu formula propuesta funciona a la perfeccion.







"Héctor Miguel" wrote:

hola, vm_tapia !

> ... un archivo con informacion para elaborar las facturas
> ... en una hoja tengo los datos del cliente, concepto de la factura y totales
> ... en otra hoja tengo el detalle de la factura estructurado de la siguiente manera <-- aqui es donde tengo el problema
> A B C D E F G
> 1 folio cantidad descripcion precio cantidad descripcion precio
> 2 12345 1 venta 10.00 2 venta 12.00
> 3 12346 10 venta 10.00 15 venta 15.00
> ... en la hoja donde tengo los datos en resumen, obtengo el sub-total a facturar por medio de la siguiente formula:
> =(b1*d1)+(e1*g1)+(h1*j1)...
> ... es una formula demasiado larga, ya que tengo 32 partidas y no he encontrado la manera de "compactar" la formula
> ... al tener mas de 500 lineas... al actualizar un valor en cualquier celda, tarda una eternidad... el recalculo de la hoja.
> Espero haberme explicado correctamente.

[a veces... como que] me gusta 'complicarme la existencia' :))
ve si los siguientes 'apuntes' [al menos] se acercan a la solucion que buscas [al menos en tanto se 'simplifica' mas] :D
y... si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

1) considerando que las formulas que expones son de las 'elementales' [sumas y multiplicaciones] :)
es muy probable que 'la eternidad' en el re/calculo del modelo se deba a otros 'factores' -?-
[como el 'arbol' de dependencias y -quizas- el uso de 'otras' formulas o caracteristicas mas... 'consume-recursos'] -?-

-> por si las dudas... visita sitios que 'tratan' de problemas de memoria y 'rendimiento' en excel:
1 [David McRitchie] http://www.mvps.org/dmcritchie/excel/slowresp.htm
2 [Charles Williams] http://www.DecisionModels.com/memlimitsc.htm

2) para 'simplificar' la formula que expones [que no te aseguro que 'quede' mas 'leible/entendible/facil de digerir/...']
una alternativa seria [el 'equivalente' a]... 'filtrar' cada fila_rango por sus columnas -> en grupos de 3 -> partiendo de la columna 'B'
lo cual [solo] es posible utilizando la funcion subtotales y 'metiendo' la funcion desref como su segundo argumento [la referencia]

3) suponiendo que la primer fila con datos es la fila 2, utiliza la siguiente formula en la celda donde necesitas 'el total'...
=sumaproducto(subtotales(9,desref(b2,,fila(indirecto("1:3"))*3-3)),subtotales(9,desref(b2,,fila(indirecto("1:3"))*3-1)))

[solo toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';'] :D

4) la 'explicacion' de [o un intento por explicar] la formula seria la siguiente:
[p.e.] en la formula que expones, existen [o se aprecian]...
a) 3 grupos de columnas con 'cantidad' [B, E y H] y 3 grupos de columnas con 'precios' [D, G y J]
-> en la formula estan 'referenciados' [los grupos] en la llamada a la funcion -> fila(indirecto("1:3"))
[si tienes mas de tres grupos, modifica el 'indirecto' a los grupos necesarios ["1:4", "1:5", "1:6", etc.]
b) hay dos columnas 'de distancia' entre cantidad/es y precio/s [B->D, E->G, H->J, etc. etc. etc.]
-> para 'tomar' las columnas de cantidad [B, D y H] la primera funcion desref se desplaza 0, 3 y 6 columnas [*3-3]
-> para 'tomar' las columnas de precio [D, G y J] la segunda funcion desref se desplaza 2, 5 y 8 columnas [*3-1]
-> la funcion externa sumaproducto se encarga de multiplicar 'cada quien con su cada cual' [cantidad*precio] :))



Respuesta Responder a este mensaje
#5 vm_tapia
23/05/2006 - 20:36 | Informe spam
Hector Miguel:

Gracias por tu ayuda ¡ERES MI IDOLO!

la formula que me diste funciona la perfeccion.

la formula "matricial" no pitufa, pero no importa, con la otra tengo.

GRACIAS.



"vm_tapia" wrote:

Gracias por tu ayuda Hector, voy a probar tu solucion y te aviso del resultado.

"Héctor Miguel" wrote:

> hola [de nuevo], vm_tapia !
>
> > 3) suponiendo que la primer fila con datos es la fila 2, utiliza la siguiente formula en la celda donde necesitas 'el total'...
> > =sumaproducto(subtotales(9,desref(b2,,fila(indirecto("1:3"))*3-3)),subtotales(9,desref(b2,,fila(indirecto("1:3"))*3-1)))
>
> -> otra alternativa a la formula anterior [solo que resulta en una formula 'matricial'] es la siguiente:
> =suma(si(residuo(columna(b2:h2),3)=2,b2:h2)*si(residuo(columna(d2:j2),3)=1,d2:j2))
>
> -> el 'detalle' es que 'necesitas' hacer el 'desplazamiento' de las columnas cantidad y precio de forma 'manual' :))
> primera parte: incluye columnas con titulo de cantidad: -> columna(b2:h2)
> segunda parte: incluye columnas con titulo de precio: -> columna(d2:j2)
>
> -> la 'velocidad' en el re/calculo de las formulas anteriores es -practicamente- 'la misma' [variaciones 'menores'] :))
> la cantidad de formulas que uses en el modelo [y quizas las 'otras' que pudieran existir]...
> es lo que pudiera 'alentar' cada re/calculo -?- [revisa los enlaces sugeridos] ;)
>
> si cualquier duda [o informacion adicional]... comentas ?
> saludos,
> hector.
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida