Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: solo para usuarios AVANZADOS de excel

108 views
Skip to first unread message

KL

unread,
Apr 26, 2005, 4:42:05 AM4/26/05
to
Hola Edgar,

Primeramente decirte (y no lo tomes a mal) que titulos tipo "solo para..."
reducen la probabilidad de obtener la respuesta de manera importante, y si
encima incluyes el termino tan relativo como "usuarios avanzados" corres el
riesgo de repellir a todos, sea por la connotacion de prepotencia que tiene
esta frase o porque el usuario no sabe o prefiere no identificarse con los
terminos basico, intermedio, avanzado, maestro, genio etc.

Dicho lo anterior, precisamente ayer puse mi respuesta al hilo "Averiguar
que Sumandos corresponden a un resultado" posteado el 22-4-2005 por Chona.
Este tipo de tarea, creo que, requiere del calculo de permutaciones. El
numero de las posibles permutaciones las puedes calcular mediante la funcion
factorial: N! (donde N es el numero de sumandos). En Excel la funcion seria
FACT(N). Y ahora atento al dato :-) Dado que tienes hasta 1000 posibles
sumandos, considera que:
1) el numero de permutaciones para 14 posibles sumandos es de 87.178.291.200
2) el maximo que me ha podido devolver la funcion FACT ha sido
7,257415615308E+306, lo cual corresponde a 170 posibles sumandos

Mi conclusion es que esta es una tarea imposible para Excel. Ahora es
probable que me equivoque terriblemente ya que he visto que Hector Miguel
decia tener una hoja que hace lo que buscas y creo que no tardara en darnos
su valiosa opiñon.

Saludos,
KL


"edgar vargas" <edgar var...@discussions.microsoft.com> wrote in message
news:BCF3CBCF-62F7-4CD4...@microsoft.com...
> tengo una lista de registros (indeterminados) con valores numericos en la
> columna "A"
> ejemplo:
> 5,287.7
> 52,188.63
> 128,982.2
> etcetera, etcetera, (puede llegar a ser un listado de hasta 1.000
> registros).
> necesito una (herramienta, formula o macro) que me permita introducir un
> valor indeterminado (suministrado por el usuario, ejemplo: 134,269.9) y
> que
> el software me diga si "SOLAMENTE SUMANDO" encuentra valores que me den el
> resultado (valor) que el usuario introdujo. y que me señale que celdas
> sumo
> para obtener el resultado (valor) que introdujo el usuario.
> nota: en el ejemplo el valor 134,269.9 da de sumar el primer y tercer
> registro.
> muchas gracias a los genios que me puedan responder.
> edgar_var...@yahoo.es


Luis Garcia

unread,
Apr 26, 2005, 5:29:51 AM4/26/05
to
"edgar vargas" <edgar var...@discussions.microsoft.com> escribió en...

> tengo una lista de registros (indeterminados) con valores numericos en la
> columna "A"
> ejemplo:
> 5,287.7
> 52,188.63
> 128,982.2
> etcetera, etcetera, (puede llegar a ser un listado de hasta 1.000
registros).
> necesito una (herramienta, formula o macro) que me permita introducir un
> valor indeterminado (suministrado por el usuario, ejemplo: 134,269.9) y
que
> el software me diga si "SOLAMENTE SUMANDO" encuentra valores que me den el
> resultado (valor) que el usuario introdujo. y que me señale que celdas
sumo
> para obtener el resultado (valor) que introdujo el usuario.
> nota: en el ejemplo el valor 134,269.9 da de sumar el primer y tercer
> registro.

Hola Edgar, una primera aproximacion para tu problemas seria algo
parecido a esto:

1) Ordenar la lista de mayor a menor

2) Y crear una funcion recursiva al estilo de:

F(Suma, SumaTotal)
Buscar un 'Sumando' menor o igual que 'SumaTotal - Suma'
Si no se encuentra, abandonamos esta combinacion.
Si la 'Suma' + 'Sumando Actual':
> 'Suma Total', abandonamos esta combinacion.
= 'Suma Total', tenemos una combinacion Ok.
< 'Suma Total', llamamos 'recursivamente' a esta funcion
con la Suma = Suma + 'Sumando Actual'.

Aqui faltaria pulir algunas cosillas:
Como guardas los sumandos que componen la combinacion que
se esta procesando?. Si se encuentra una combinacion Ok, seguir
procesando combinaciones o no?. Pero eso ya lo tienes que decidir
tu.

Espero que te sirva.

Saludos

Fernando Arroyo

unread,
Apr 26, 2005, 5:47:54 AM4/26/05
to
Tienes razón en que Excel parece, en principio, incapaz de encontrar una solución. Pero sí es posible lograrlo usando Solver y SUMAPRODUCTO (aunque ignoro si existe un máximo para el número de sumandos, o alguna otra limitación).

Yo tengo que tener por algún sitio un libro en el que usé esta técnica. Si consigo encontrarlo, lo subo a la red convertido en ejemplo.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"KL" <NOSPAMla...@PLEASEhotmail.com> escribió en el mensaje news:On7huwjS...@TK2MSFTNGP10.phx.gbl...

Luis Garcia

unread,
Apr 26, 2005, 6:02:43 AM4/26/05
to
Oppps, se me ha escapado sin querer... faltaba el bucle :-), creo
(si no me he vuelto a equivocar) que quedaria algo como asi:

1) Ordenar la lista de mayor a menor

2) Y crear una funcion recursiva al estilo de:

F(Suma, SumaTotal)

Para todos los sumandos menores o iguales que 'SumaTotal - Suma'

Comprobación Extra:
Si la suma de los sumandos menores qu 'SumaTotal - Suma' es
menor que 'SumaTotal - Suma', abandonamos esta combinacion.
Es decir, las suma de los que quedan no va a llegar nunca a
SumaTotal :-)

Si la 'Suma' + 'Sumando Actual':

es > 'Suma Total', abandonamos este sumando
es = 'Suma Total', tenemos una combinacion Ok.
es < 'Suma Total', llamamos 'recursivamente' a esta funcion


con la Suma = Suma + 'Sumando Actual'.

Aqui faltaria pulir algunas cosillas:
Como guardas los sumandos que componen la combinacion que
se esta procesando?. Si se encuentra una combinacion Ok, seguir
procesando combinaciones o no?. Pero eso ya lo tienes que decidir
tu.

Espero que te sirva.

Saludos

"Luis Garcia" <luis...@redestb.es> escribió en...

Fernando Arroyo

unread,
Apr 26, 2005, 6:22:14 AM4/26/05
to
Éste es el ejemplo (muy sencillo, tan sólo con 10 sumandos):

http://www.excelsp.com/ejemplos/ejemplo20050426a.xls

KL

unread,
Apr 26, 2005, 7:06:32 AM4/26/05
to
Hola Fernando,

Buenisima la plantilla - con tu permiso me la guardo para futurras
referncias :-)

Sin embargo, creo que se han confirmado mis dudas:

El PC que he utilizado para el test es un Dell 4300 que tiene P4 1.8MHz,
SDRAM 512Mb
1) Solver solo devuelve una combinacion (solucion) a la vez
2) Para 100 sumandos ha tardado en encontrar una solucion unos 30 segundos
3) Para 200 sumandos ha tardado en encontrar una solucion unos 3 minutos :-(
3) Al intentar 201 sumandos, me mando a tomar ... aire :-((
5) De 1000 sumandos ni hablar :-D

Saludos,
KL

"Fernando Arroyo" <ferarr...@ESTOwanadoo.es> wrote in message
news:OIpWgnkS...@TK2MSFTNGP09.phx.gbl...

0 new messages