[ s.makic @ 29.08.2007. 14:43 ] @
kako da mi excel automatsi izbaci niz datuma, ako imam na primer početni datum 2/1/2000
i 20 rata(meseca). Znači da ispiše sledećih 19 meseca u vidu niza.
[ Jpeca @ 30.08.2007. 07:50 ] @
Neka je u ćeliji B1 datum početka kredita, a u ćelji B2 broj rata.

Za prvu ratu u ćeliji A4 upišeš redni broj rate 1 i u ćeliji B4 prepišeš datum početka kredita formula: =B1
Redni broj sledeće rate dobiješ tako što uvećaš prethodni redni broj za jedan =A4+1 .
Sad je potrebno da ograničimo ispis samo na uneti broj rata.
Za redne brojeve ispitujemo da li je premašen uneti broj rata pa na osnovu toga izračunavamo redni broj ili ne. Dakle, umesto prosto A4 +1 unesemo formulu
Code:
=IF(A4<$B$2,A4+1,"")

u ćeliju A5 i kopiramo u ćelije ispod, npr. sledećih 100 redova.

Na osnovu prethodne rate, datum sledeće rate izračunavaš tako što uvećaš mesec za jedan:
Code:
 =DATE(YEAR(B4), MONTH(B4)+1, DAY(B4)) 

Opet da bi ograničili ispis proverimo da li postoji broj rate za izračunati datum, a u suprotnom upisujemo prazan string. Dakle unesemo formulu
Code:
=IF(LEN(A5)=0,"",DATE(YEAR(B4), MONTH(B4)+1, DAY(B4)))

u ćeliju A6 i opet kopiramo u ćelije ispod.

Može naravno (slično) i bez rednog broja rate, ali mi se čini da je ovako čitljivije.

Drugi način je da napraviš jedno dugme na koje se startuje makro. Klik na dugme, nakon što se unesu početni datum i broj rata popunjava datume. Makro je prilično jednostavan.
[ 3okc @ 30.08.2007. 08:16 ] @
Možda bi pre makroa mogao da pokušaš sa ovim, neko se baš potrudio.

Primer je u $ ali ovo se može prilagoditi za šta već treba, radi se samo o formatu zapisa. Takođe, funkcije su unete za max od 360 rata (30 godina) pa ako imaš potrebe za većim periodom otplate prosto iskopiraj.

[Ovu poruku je menjao 3okc dana 30.08.2007. u 09:26 GMT+1]
[ s.makic @ 30.08.2007. 22:07 ] @
Hvala gospodinu Jpeci, upravo je to pomoć koja mi je bila potrebna. Funkcije i formule koje stemi dali rešili su još neke druge probleme.
[ 3okc @ 31.08.2007. 09:48 ] @
Možda je ipak bolje da se osloniš na makro-verziju. U pecinom primeru makro i f-je ne daju jednake rezultate(!), bar ne u svim slučajevima.
Citat:
Jpeca: Na osnovu prethodne rate, datum sledeće rate izračunavaš tako što uvećaš mesec za jedan:
Code:
 =DATE(YEAR(B4), MONTH(B4)+1, DAY(B4)) 

Ovo je suviše pojednostavljeno, radi za većinu slučajeva ali probaj da upišeš za datum 31.8.2007. (u oba lista!) pa pogledaj razliku. Sa makro-funkcijom nema problema, dobićeš uvek poslednje dane u mesecu, koji god da je, dok sa gornjom f-jom to nije slučaj. –Mislim, ok ako povedeš računa da određenog datuma ne uzimaš kredit.
[ Jpeca @ 31.08.2007. 10:12 ] @
Da hvala na ispravci - veoma interesantan greška. Eventualna ispravka mogla bi da bude da se ispita da li je dan u mesecu veći od 30 pa da se u tom slučaju koristi izraz
Code:
=DATE(YEAR(A1),MONTH(A1)+2,0)

koji vraca poslednji dan u sledećem mesecu. Problem je sledeća rata od januara jer februar ima samo 28/29 dana pa bi i tu trebalo ispitivanje... Funkcija bi se prilično iskomplikovala npr.
Code:
=IF(DATE(YEAR(H5), MONTH(H5)+1, DAY(H5))>DATE(YEAR(H5),MONTH(H5)+2,0),DATE(YEAR(H5),MONTH(H5)+2,0),DATE(YEAR(H5), MONTH(H5)+1, DAY(H5)))


Makro radi sa vb funkcijom DateAdd (koliko ja znam nema ekvivalent u Excelu) pa zato do toga ne dolazi. Ali funkcije za rad sa datumima su često potrebne - nije uvek svrsishodno pisanje makroa - pa je i ovo razmatranje datumskih funkcija nadam se bilo od koristi.

[Ovu poruku je menjao Jpeca dana 31.08.2007. u 11:25 GMT+1]
[ 3okc @ 31.08.2007. 12:57 ] @
Ovo i dalje ne radi:
Citat:
Jpeca
Code:
=IF(DATE(YEAR(H5), MONTH(H5)+1, DAY(H5))>DATE(YEAR(H5),MONTH(H5)+2,0),DATE(YEAR(H5),MONTH(H5)+2,0),DATE(YEAR(H5), MONTH(H5)+1, DAY(H5)))
Zapravo, sad je još gore, zakucava na manji broj dana za sve mesece ispod onog gde se to javi.

Mislim da će ovo da pomogne (f-ja je iz izmenjenog Rate.xls):
Code:
=IF(DATE(YEAR($B4); MONTH($B4)+1; DAY($B4))>DATE(YEAR($B4); MONTH($B4)+2;0); DATE(YEAR($B4); MOD(MONTH($B$1)+A5;12); 0); DATE(YEAR($B4); MONTH($B4)+1; DAY($B$1)))
Sada se dobija isti rezultat kao sa makro-f-jom ali mi se i pojavila misteriozna greška u ćelijama ispod max broja rata (koje ne treba da učestvuju u proračunu). Dobro, ovo sad može dodatno da se rešava ali sam ostavio ovako da ne komplikujem dodatno.

Interesantno ovo sa greškom, pokušaj sa izmenama broja rata, npr upiši 24.
[ Jpeca @ 31.08.2007. 13:20 ] @
Formula koju sam dao samo računa datum povećan za jedan mesec u odnosu na zadati datum. Da bi se to primenilo u nizu treba malo prepravke kao što si i ti primetio, kao i ono prvo IF koje sakriva rate koje ne trebaju.

Pregledajući literaturu našao sam i jednostavnije rešenje funkcija EDATE je ustvari zamena za VB funkciju DateAdd
Ona uzima u obzir kraj meseca pa mesece dodaje "intiligentno", tako da
=EDATE("31/1/2007",1) daje rezultat 28/2/2007

Dopunio sam primer sa korišćenjem ove funkcije. Ova funkcija je deo Data Analysis ToolPak-a pa ga u verziji pre 2007 treba posebno uključiti



[Ovu poruku je menjao Jpeca dana 31.08.2007. u 15:52 GMT+1]