TORU Foorum

Exelis summaga jamamine

Starlight - 13.9.2009 20:53

Tere,

Tekkis selline huvitav asi, et kui mul on hunnik erinevaid arve, näiteks mingite toodete hinnad(ütleme, et umbes 300 tükki).
Kuidas oleks võimalik leida exelis just need tooted, mille hinnad moodustavad nt. kogusummaks 18124,42.

Rõhutan veelkord, et see arv ei tohi kindlasti sisaldada kõiki tooteid ehk kogu summa moodustavad mingite kindlate toodete hinnad.
Üritasin igatpidi guugeldeda, ei suutnud kohe mitte midagi sellist leida, samas see peab kuidagi võimalik olema.

Niiet Office proffesionaalid, hüpake nüüd abiks välja!

DonQ - 13.9.2009 22:53

Sellisel kujul pole see kindlasti võimalik. Isegi teoreetiliselt on tegu vastikut tüüpi ülesandega, kus põhimõtteliselt peab hakkama kõiki kombinatsioone läbi proovima - VBAs saaks selle muidugi kirjutada, aga kui kaua ta töötab, on raske öelda.

Aga võib-olla Sa eksisid kuidagi ülesande kirjeldamisega? :rolleyes: Mis eesmärk on - leida arve summa järgi müüdud kaupade kogum või?

margus - 13.9.2009 23:41

Ma pole kunagi Exceliga kokku puutunud, aga kas seal mingi random funktsioon on olemas? Sellega annaks vast midagi aretada...

Starlight - 14.9.2009 16:38

DonQ, kohe kindlasti ei eksinud. Kusjuures, ma päris ei teagi mis sellega vaja teha on, aga isa tahtis mul sellist asja. Mingi savi on laoga ja siis nüüd teada kogusumma ja iga kauba hind ja nendest peaks valikulised kaubad kokku andma siis tolle kogusumma. Oiii ma suudan keeruliselt seletada.
No anyway. Mul on teada kaubad, ning nendest kaupadest hindadest on vaja aretada kokku üks arv. Kõige parem on see, et nii kogusumma, kaal ja ühe kauba hind peavad klappima.

Kakoi Random funktsioon, mulle küll midagi sellist silma ei jää? Või on äkki mõnes muus programmis see võimalik, OOo? vms?

Ise läbi katsetades võtaks asi ilmselt aastaid aega, kui just Bingo Lotot ei mängi sellega :D VBA'd ise kasutada ei oska, niiet loodaks jälle mõne targema poolset abi.

Timukas - 14.9.2009 17:15

Sai siis midagi aretatud. Varem pole VBAga tegelenud, seega võib esineda põhimõttelisi vigu ja muid ebakorrektsusi, kuid kõik tundus töötavat. Hetkel on arvestatud nii, et toote nimetused on veerus A ja hinnad veerus B ning kokku 12 rida. Kui tahad midagi muud panna, siis muuda sellist rida:
Kood:
Hinnad = Range("A1:B12").Value


Ja kui näites on valesid vastuseid, siis asi on selles, et enne tegutseb makro, annab õige vastuse ja siis alles random funktsioon ning muudab arvud ära. Konstantsete hindadega seda probleemi ei ole :)

Lisa fail: toru.xls (28kB)
Seda faili on alla laaditud 374 korda

Starlight - 14.9.2009 18:32

Tänud, see variant töötas ning väiksemad arusaamatused said u2u kaudu kristallveestatud.

Timukas - 14.9.2009 23:13

Teemaalgatajal tekkis probleem suuremate kogustega. Sai siis enamik ümber kirjutatud. Probleem säilis, kuni avastasin, et üks Integer tuleb asendada Long'iga :lol:
Nüüd töötab teoorias 15 ja rohkema üksiku arvuga, mille summa tuleb leida. Samas õnnestus ühe katsetuse käigus arvuti kokku jooksutada (ja osa koodiga sellega kaotada). Või ütleb lihtsalt, et out of memory (panen selle oma Pentium III läpaka süüks, millel 256mb RAMi).
Alt+F11 saab koodi muuta (näiteks lahtrite asukohta).

Lisa fail: toru2.xls (28kB)
Seda faili on alla laaditud 359 korda