turk182
14.09.10,07:19
Zdravím, potreboval by som poradiť...Chcel by som v Exceli pomocou nejakej funkcie alebo funkcii spravit nasledujuce:

mam cislo, ktore popisuje sirku a mam moznosti jeho rozdelenia na mensie sirky...

potreboval by som aby mi excel vypisal vsetky moznosti rozdelenia cisla danymi sirkami tak, aby vznikol co najmensi zvysok...

potrebujem aby to pracovalo so vsetkymi sirkami sucasne a naslo najvhodnejsiu kombinaciu, pripadne vsetky kombinacie a zoradi ich podla velkosti zvysku...DAKUJEM za pomoc
ivka70
14.09.10,05:21
To je skor matematicky problem ako problem Excelu :)

Mozu sa sirky, na ktore delis, aj opakovat alebo kazda moze byt pouzita len 1x?
turk182
14.09.10,05:34
Z toho čo som napísal je jasné, že sa šírky môžu opakovať:)...pre mna je z hladiska excelu dolezite ze vypise urcite moznosti, nechcem konkretny vysledok s jedinym najmensim zvyskom, ale chcem si z danych vysledkov napr. prvych 10 moznosti s najmensim zvyskom vybrat taku ktora mi vyhovuje...
Stefan2005
14.09.10,07:31
možná že to zvládne i Excel; ak sa to nepodarí, tak sú na takéto prípady špeciálne programy - do 30 ks (dielcov) sa dá využiť free verzia Optimik ( http://rksoft.sk/produkty/optimik-2-36-c/vlastnosti/ )
marjankaj
14.09.10,10:43
Možné riešenia pomocou excelu. Chcel si to konkrétne na tieto hodnoty, alebo všeobecne?

279 230 165 114

0 3 2 5 1590
1 3 1 4 1590
2 3 0 3 1590
turk182
14.09.10,12:32
no vdaka...pracuje to paradne, celkom dobre nerozumiem, ako si to spravil (myslim to makro) ale funguje:)

ak chcem menit hodnoty, ako mam zmenit atributy toho makra?
marjankaj
14.09.10,12:41
no vdaka...pracuje to paradne, celkom dobre nerozumiem, ako si to spravil (myslim to makro) ale funguje:)

ak chcem menit hodnoty, ako mam zmenit atributy toho makra?

No iba zmeň hodnoty v zelených bunkách. Pozor musia byť zadané práve všetky štyri hodnoty.
Ak by si chcel viac alebo menej, treba makro prispôsobiť.
turk182
14.09.10,12:59
no jedná sa mi práve o to, ze chcem zvysovat pocet hodnot v inych pripadoch...ako mam to makro prisposobit...:confused:...inak vdaka - zatial to slape presne tak ako som si predstavoval:eek:
marjankaj
14.09.10,13:04
no jedná sa mi práve o to, ze chcem zvysovat pocet hodnot v inych pripadoch...ako mam to makro prisposobit...:confused:...inak vdaka - zatial to slape presne tak ako som si predstavoval:eek:

A na aký počet to chceš zvyšovať?
turk182
14.09.10,17:17
A na aký počet to chceš zvyšovať?

Neviem presne, podla potreby:)...staci mi povedat ake atributy mam zmenit v tom makre, alebo podrobnejsie vysvetlit jeho fungovanie, lebo moje excelovske vedomosti siahaju len po VisualBasic, a predpokladam ze toto si robil specialne v nom...

ak mi vysvetlis princip fungovania nejako si to nastavim v buducnosti aj sam...

VPD - velmi pekne dakujem:rolleyes:
marjankaj
14.09.10,18:06
Neviem presne, podla potreby:)...staci mi povedat ake atributy mam zmenit v tom makre, alebo podrobnejsie vysvetlit jeho fungovanie, lebo moje excelovske vedomosti siahaju len po VisualBasic, a predpokladam ze toto si robil specialne v nom...

ak mi vysvetlis princip fungovania nejako si to nastavim v buducnosti aj sam...

VPD - velmi pekne dakujem:rolleyes:

Tu je kód VBA aj s poznámkami.


Sub Makro1()
riadok = 1
' načítanie hodnôt z tabuľky
a = Cells(1, 2).Value
b = Cells(1, 3).Value
c = Cells(1, 4).Value
d = Cells(1, 5).Value
x = Cells(1, 6).Value


' štyri vnorené cykly
For i = 0 To x \ a ' koľko krát sa nachádza hodnota B1
For j = 0 To x \ b ' koľko krát sa nachádza hodnota C1
For k = 0 To x \ c ' koľko krát sa nachádza hodnota D1
For l = 0 To x \ d ' koľko krát sa nachádza hodnota E1

hod = x - i * a - j * b - k * c - l * d ' výpočet zostatku
If hod >= 0 And hod < d Then ' záporný zostatok preskoč a tak isto aj väčší ako najmenší rozmer
riadok = riadok + 1

' uloženie hodnôt do tabuľky
Cells(riadok, 1).Value = hod
Cells(riadok, 2).Value = i
Cells(riadok, 3).Value = j
Cells(riadok, 4).Value = k
Cells(riadok, 5).Value = l
End If

Next l
Next k
Next j
Next i

' zotriedenie výsledkov
Range("A2:E612").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A1").Select

End Sub
marjankaj
15.09.10,09:41
Trochu som to rozšíril na 8 hodnôt. Aj trochu upravil.
Možno bude stačiť.;)
Na kód sa dostaneš: ALT + F11 a môžeš si to doplniť.
Zeleným sú komentáre, kde to treba doplniť.