Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 14488 Skopiuj do schowka Makro jako dodatek - odsetki inaczej
Autor Wiadomość
Giena123
Starszy Forumowicz


Posty: 52
Wysłany: 12-11-2009, 08:27   Makro jako dodatek - odsetki inaczej

Zwracam się z prośbą do osób którym napisanie lub zmiana kodu nie sprawia problemów a wręcz odwrotnie - stanowi wyzwanie i przyjemność. Znalazłem w sieci kod (nie znam autora) dodatku do Excela i formułę dzięki którym można obliczać odsetki za dany okres. Mój problem polega na tym, że nie mam zielonego pojęcia jak zmienić kod aby odsetki można było liczyć nie od pojedynczej wpłaty ale od wpłat okresowych. Chodzi o to, że odsetki muszą być liczone jako suma kolejnych okresów tj. od daty A do daty B, od A + 1 m-c do daty B, od daty A + 2 m-ce do daty B itd. aż do chwili gdy miesiąc daty A + n = miesiąc daty B. Ponieważ Kodeks Cywilny daje możliwość dochodzenia z tytułu wpłat okresowych za 3 lata wstecz - to musi być możliwość obliczenia dla 36 m-cy.
Wydaje się, że należy dopisać jakąś pętlę do wykonania - ale jaką?

Sama funkcja wygląda następująco

=odsetki(A3;A1;A2;C1:D2)

gdzie:
- komórka A1 i A2 - okres za jaki liczymy odsetki (u mnie te dane są w kolejnym wierszu)
- A3 - kwota podstawowa (podobnie w kolejnych wierszach tego samego arkusza)
- C1 i kolejne komórki w kolumnie C tworzą tablicę początków kolejnych okresów obowiązywania zmienionej stawki (w innym arkuszu tego samego skoroszytu)
- A5 - wynik obliczenia

W swojej pierwotnej wersji wszystko działa super. Porównywałem z kalkulatorami dostępnymi na stronach www.

Z góry dziękuję za odpowiedzi. Pozdrawiam.



Kod:

Option Explicit
Option Base 1
Public Function Odsetki(Kwota, Data_Płatności As Date, Data_Wpłaty As Date, Tablica)
'**********************************************************
'Funkcja obliczjąca odsetki od zadanej kwoty
'Tabela jest to zakres komórek gdzie umieściliśmy stopy odsetkowe
'W 1 kolumnie początki dat obowiązywania - w 2 stopy procentowe
'Uwaga excl.gif! - Tablica musi być posortowana w/g dat (rosnąco)
'*************************************************************

Dim Ile_dni As Integer 'ile dni zaległości
Dim Ile_stawek As Integer 'ile wartości stóp odsetek
Dim Dni As Integer 'Licznik dni
Dim Stawki As Integer 'Licznik stawek odsetek
Dim Stawka 'Stawka procentowa
Dim suma
Ile_dni = Data_Wpłaty - Data_Płatności
Ile_stawek = Tablica.Count

Odsetki = 0

For Dni = 1 To Ile_dni

For Stawki = 1 To Ile_stawek Step 2
If Data_Płatności + Dni > Tablica(Stawki) Then
Stawka = Tablica(Stawki + 1)
Else
Exit For 'co by nie leciało dalej jak już znajdzie
End If

Next

Odsetki = Odsetki + (Kwota * Stawka / 365)
Next

Odsetki = Application.WorksheetFunction.Round(Odsetki, 6)
'Z tego co wiem odsetki od zaległości podatkowych zaokrągla się do pełnych dziesiątek groszy
End Function
_________________
Giena123
ID posta: 77269 Skopiuj do schowka
 
 
tkuchta1 
Excel Expert



Pomógł: 1693 razy
Posty: 2746
Wysłany: 12-11-2009, 09:54   

podaj link do kalkulatora z którym porównujesz wyniki funkcji. Pod 14'stej mogę do tego siąść.
_________________
Tomek



Moja Stronka
APoCoTenExcel
Ostatnia aktualizacja: 2014-06-14
ID posta: 77274 Skopiuj do schowka
 
 
Giena123
Starszy Forumowicz


Posty: 52
Wysłany: 12-11-2009, 11:18   

Jest wiele stron. Mnie chodzi o odsetki ustawowe - ja sprawdzałem na:
http://www.infor.pl/kalku...i_ustawowe.html
oraz
http://www.bankier.pl/fir...CFRyFzAodUlCmpA

W obu przypadkach wyniki były takie same jak obliczone w Excelu z dodatkiem i formułą. Oczywiście w arkuszu odsetki_dane miałem dwie kolumny (C, D) z datami i wysokościami stopy%.

Okres Stopa % w stosunku rocznym
od stosunku rocznym
01.05.1993 54,00%
15.12.1995 46,00%
01.01.1997 35,00%
15.04.1998 33,00%
01.02.1999 24,00%
15.05.1999 21,00%
01.11.2000 30,00%
15.12.2001 20,00%
25.07.2002 16,00%
01.02.2003 13,00%
25.09.2003 12,25%
10.01.2005 13,50%
15.10.2005 11,50%
15.12.2008 13,00%

Testowo do obliczenia wysokości odsetek dla wpłaty cyklicznej pomocniczo musiałem napisać formułę, która sumowała odsetki za poszczególne okresy (SUMA(ZAOKR(odsetki($A$3;(DATA(ROK(F1);MIESIĄC(F1);DZIEŃ(F1)));$A$2;$C$1:$D$14);2);ZAOKR(odsetki($A$3;(DATA(ROK(F1);MIESIĄC(F1)+1;DZIEŃ(F1)));$A$2;$C$1:$D$14);2);..itd)
gdzie:
F1 - data początkowa
A2 - data końcowa
A3 - kwota
$C$1:$D$14 - tablica

W tym układzie działa ale przy skopiowaniu formuł (w trzech kolumnach i z odwołaniami do innych komórek - data pocz..., data koń.., kwota) strasznie zamula Excela i plik lawinowo nabiera ogromnych rozmiarów tym bardziej, że ze względu na ograniczenia ilości danych w jednej komórce formułę musiałem ograniczyć do 18 m-cy, na kolejne 18 m-cy w sąsiedniej kolumnie, a w kolejnej sumę ich wyników. Wszystko skopiowane w kolejnych wierszach (1445) arkusza dane, który pobiera sobie z innych arkuszy tego samego skoroszytu informacje o wpłatach za jakiś okres.
W tym układzie musiałem wyłączyć automatyczne obliczanie gdyż nie mogłem pracować wprowadzając dane o wpłatach, natomiast obliczenie ręczne trwaaaaało dłuuuugo i ostatecznie byłem zmuszony usunąć te kolumny.

Dzięki za zainteresowanie. Pozdrawiam.

[ Dodano: 2009-11-12, 12:39 ]
W załączniku (może pomoże w zrozumieniu problemu) inny plik, w którym pierwotnie nie korzystałem z dodatku a dzięki któremu obliczałem także wpłaty okresowe.
Dodatkowo jest tam także arkusz, który wykorzystuje dodatek odsetki.

Arkusze są chronione ale bez hasła.


Pozdrawiam.

[ Dodano: 2009-11-12, 12:43 ]
Załącznik

[ Dodano: 2009-11-12, 12:47 ]
Mam problem z załącznikiem - może teraz.

kalkulator odsetek dla wpłat cyklicznych.rar
Pobierz Plik ściągnięto 85 raz(y) 39.8 KB

_________________
Giena123
ID posta: 77278 Skopiuj do schowka
 
 
tkuchta1 
Excel Expert



Pomógł: 1693 razy
Posty: 2746
Wysłany: 12-11-2009, 15:33   

Drugiego załącznika nie ściągałem ale poczytaj to ...

Wg mnie funkcja ta powinna wyglądać tak
Kod:
Function OdestkiZWieluWpłat(tblWpłatyiDatyWpłat As Excel.Range, _
                            naDzień As Date)
    Dim tbl As Variant
    Dim arrTablicaOdsetek As Variant, iArr As Long
    Dim iTblWpłat As Long, Wpłata As Double, dataWpłaty As Date
    Dim Ile_dni As Integer, Dni As Integer
    Dim Stawka As Double, suma As Double
   
    arrTablicaOdsetek = Array(DateSerial(1993, 5, 1), 0.54, _
                              DateSerial(1995, 12, 15), 0.46, _
                              DateSerial(1997, 1, 1), 0.35, _
                              DateSerial(1998, 4, 15), 0.33, _
                              DateSerial(1999, 2, 1), 0.24, _
                              DateSerial(1999, 5, 15), 0.21, _
                              DateSerial(2000, 11, 1), 0.3, _
                              DateSerial(2001, 12, 15), 0.2, _
                              DateSerial(2002, 7, 25), 0.16, _
                              DateSerial(2003, 2, 1), 0.13, _
                              DateSerial(2003, 9, 25), 0.1225, _
                              DateSerial(2005, 1, 10), 0.135, _
                              DateSerial(2005, 10, 15), 0.115, _
                              DateSerial(2008, 12, 15), 0.13)
    tbl = tblWpłatyiDatyWpłat
    For iTblWpłat = LBound(tbl) To UBound(tbl)
        Wpłata = tbl(iTblWpłat, 1)
        dataWpłaty = tbl(iTblWpłat, 2)
       
        Ile_dni = naDzień - dataWpłaty
        For Dni = 1 To Ile_dni
            For iArr = LBound(arrTablicaOdsetek) To UBound(arrTablicaOdsetek) Step 2
                If dataWpłaty + Dni > arrTablicaOdsetek(iArr) Then
                    Stawka = arrTablicaOdsetek(iArr + 1)
                Else
                    Exit For
                End If
            Next
            suma = suma + (Wpłata * Stawka / 365)
        Next
    Next
    OdestkiZWieluWpłat = VBA.Round(suma, 2)

End Function

Zmiany:
1) nie widzę sensu pobierania tablicy z datami i stopami odsetkowymi z komórek Arkusza. Są one niezmienne można więc je zdefiniować w "tablicy stałych" arrTablicaOdsetek (ewentualne dodanie nowej daty i stawki myślę ze nie powinno stanowić problemu.
2) piszesz
odsetki muszą być liczone jako suma kolejnych okresów tj. od daty A do daty B, od A + 1 m-c do daty B, od daty A + 2 m-ce do daty B itd. aż do chwili gdy miesiąc daty A + n = miesiąc daty B
ale wg mnie nie powinno być tak. Poszczególne Wielkości wpłat jaki i daty wpłat mogą być różne - ich stałość jest powiedziałbym niepewna. A jażeli założymy że jednak są to stałe to jak poradzisz sobie z np: spóźnieniem o pare dni, opuszczeniem miesiąca wpłat, nadpłatą w jakimś miesiącu ...
proponuję jako argument do mojej funkcji wprowadzić zakres dwukolumnowy w którym pierwszą kolumną będą wielkości wpłat a drugą daty tych wpłat - zakres taki to tblWpłatyiDatyWpłat
3) samego mechanizmu nie zmieniałem

W załaczniku obie funkcje i test dla przykładowych wpłat:
- B2:B10 wpłaty
- C2:C10 daty Wpłat
- D2 - dzień na który liczymy wielkosć odsetek
- G2:H15 tablica: daty i stawki %'owe (potrzebne do f.Odsetki)

- E2:E10 (E2 przeciągnięta w dół) formuła
Kod:
=Odsetki(B2;C2;$D$2;$G$2:$H$15)
policzenie jednak tych 9'ciu wielkośc trwało jednak na tyle długo że Wkleiłem je "Specjalnie -> Wartości" i zsumowałem w kom.E12

sumę taką można policzyć (migiem :-D ) formułą
Kod:
=OdestkiZWieluWpłat(B2:C10;D2)


:-)

Zeszyt1.zip
Pobierz Plik ściągnięto 102 raz(y) 18.75 KB

_________________
Tomek



Moja Stronka
APoCoTenExcel
Ostatnia aktualizacja: 2014-06-14
Ostatnio zmieniony przez tkuchta1 12-11-2009, 15:36, w całości zmieniany 1 raz  
ID posta: 77306 Skopiuj do schowka
 
 
adamas_nt 
Fan Excela


Pomógł: 47 razy
Posty: 61
Wysłany: 12-11-2009, 15:36   

;-)
Moja propozycja: Dodatkowy argument funkcji.

kalkulator odsetek dla wpłat cyklicznych(1).zip
Pobierz Plik ściągnięto 73 raz(y) 73.27 KB

ID posta: 77307 Skopiuj do schowka
 
 
Giena123
Starszy Forumowicz


Posty: 52
Wysłany: 12-11-2009, 16:00   

Co do terminów i kwot - to terminy i comiesięczne kwoty są (winny być zgodnie z umową) zawsze takie same dla danego kontrahenta.

Wielkie dzięki za Wasze propozycje. Sprawdzę wieczorem czy a jeśli tak to która będzie odpowiedniejsza dla moich potrzeb. Dam odpowiedź po przetestowaniu Waszych propozycji.
Nie mniej ogromne podziękowania za zainteresowanie problemem.

Pozdrawiam.
_________________
Giena123
ID posta: 77309 Skopiuj do schowka
 
 
tkuchta1 
Excel Expert



Pomógł: 1693 razy
Posty: 2746
Wysłany: 12-11-2009, 20:54   

Największymi słabościami oryginalnej funkcji są: ilość odwołań do komórek Arkusza spowodowana tą częścią
Kod:
For Dni = 1 To Ile_dni

        For Stawki = 1 To Ile_stawek Step 2
to tysiące odwołań. Pierwszą moją propozycją było zapis wpłat i datWpłat oraz stawek i stóp %'owych do tablic. Na szybkości zyskało ale nadal mechanizm analizował każdy dzień (nawet z 5tyś dni od 1995 r) z osobna w pętli For Dni = 1 To Ile_dni

Wydaje mi się że taka funkcjia też poprawnie policzy a jest sporo wydajniejsza
Kod:
Function OdestkiZWieluWpłat2(tblWpłatyiDatyWpłat As Excel.Range, _
                            naDzień As Date)
    Dim tbl As Variant
    Dim arrTablicaOdsetek As Variant, iArr As Long
    Dim iTblWpłat As Long, Wpłata As Double, dataWpłaty As Date
    Dim IleDni As Integer, Dni As Integer
    Dim suma As Double

    arrTablicaOdsetek = Array(DateSerial(1993, 5, 1), 0.54, _
                              DateSerial(1995, 12, 15), 0.54, _
                              DateSerial(1997, 1, 1), 0.46, _
                              DateSerial(1998, 4, 15), 0.35, _
                              DateSerial(1999, 2, 1), 0.33, _
                              DateSerial(1999, 5, 15), 0.24, _
                              DateSerial(2000, 11, 1), 0.21, _
                              DateSerial(2001, 12, 15), 0.3, _
                              DateSerial(2002, 7, 25), 0.2, _
                              DateSerial(2003, 2, 1), 0.16, _
                              DateSerial(2003, 9, 25), 0.13, _
                              DateSerial(2005, 1, 10), 0.1225, _
                              DateSerial(2005, 10, 15), 0.135, _
                              DateSerial(2008, 12, 15), 0.115, _
                              naDzień, 0.13)
    tbl = tblWpłatyiDatyWpłat
    For iTblWpłat = LBound(tbl) To UBound(tbl)
        Wpłata = tbl(iTblWpłat, 1)
        dataWpłaty = tbl(iTblWpłat, 2)
        For iArr = LBound(arrTablicaOdsetek) To UBound(arrTablicaOdsetek) Step 2
            IleDni = arrTablicaOdsetek(iArr) - dataWpłaty
            If IleDni > 0 Then
                IleDni = IleDni - Dni
                suma = suma + ((Wpłata * arrTablicaOdsetek(iArr + 1) / 365) * IleDni)
                Dni = Dni + IleDni
            End If
        Next
        Dni = 0
    Next
    OdestkiZWieluWpłat2 = VBA.Round(suma, 2)

End Function

a więc: dla każdej z wpłat analizuję wszystkie graniczne daty zmin stóp %'owych i wyliczam odsetki * ilość dni w przedziane :-)
_________________
Tomek



Moja Stronka
APoCoTenExcel
Ostatnia aktualizacja: 2014-06-14
ID posta: 77330 Skopiuj do schowka
 
 
Giena123
Starszy Forumowicz


Posty: 52
Wysłany: 12-11-2009, 22:32   

Dłuższy czas sprawdzałem możliwości obu rozwiązań.
I rozwiązanie kolegi tkuchta1 wydaje się prostsze ale jest jeden podstawowy problem. Data początkowa (termin zapłaty to 10 dnień miesiąca) ale i data końcowa (tutaj dowolność) prawie nigdy nie pokrywa się z początkiem lub końcem okresu obowiązywania danej stopy procentowej. Dlatego też takie rozwiązanie odpada. Tak czy owak podoba mi się to rozwiązanie z wpisaniem całej tablicy dat i stóp % w kodzie.
A może po prostu nie umiałem wykorzystać tego rozwiązania?

II rozwiązanie kolegi adamas_nt z dodatkowym argumentem powoduje, że łączny wynik podobnie jak w moim rozwiązaniu i tak musi być sumą poszczególnych wyników cząstkowych. Pozytyw z tego rozwiązania to bardziej czytelna formuła. Wystarczyło jako ostatni argument wpisać na sztywno kolejne liczby od 0 do 36.

Myślałem Panowie, że będzie to o wiele prostsze. Może wynikało to z zupełnej nieznajomości VB. Widzę jednak, że jest zupełnie inaczej. Nie zamykam tematu. Może w wolniejszej chwili (jak tam mam często) ktoś? wpadnie na jakiś genialny pomysł.

Obu kolegom składam wielkie podziękowania za dotychczasowy wkład pracy.

Pozdrawiam.
DE
_________________
Giena123
ID posta: 77337 Skopiuj do schowka
 
 
tkuchta1 
Excel Expert



Pomógł: 1693 razy
Posty: 2746
Wysłany: 13-11-2009, 08:30   

Za zwyczaj "na siłę" nie kontynuuję wątku. Jak komuś rozwiązanie nie pasuje lub nie zrozumiał "ni w pięść ni w oko" - może ktoś podrzuci coś innego, ale argument
Giena123 napisał/a:
jeden podstawowy problem. Data początkowa (termin zapłaty to 10 dnień miesiąca) ale i data końcowa (tutaj dowolność) prawie nigdy nie pokrywa się z początkiem lub końcem okresu obowiązywania danej stopy procentowej
:shock: Data końca - konic okresu... Albo nic nie kminie albo to kompletna bzdura.

w Załączniku masz sumę odsetek od wpłat wysokości 2500 wpłacanych od 2009-01-10 do 2009-10-10 (co miesiąc). Data końca 2009-10-28.
B2:B11 (wpłaty 2500) C2:C11 daty Wpłat (jw) D2 data końca

Sposób 1: formuła
Kod:
=Odsetki(B2;C2;$D$2;$G$2:$H$16)
przeciągnięta w dół i zsumowana w kom.E18 1380,14 Więc sumę odsetek licze jako sumę poszczególnych wartości odsetek wyliczonych formułą opartą o oryginalną f. Odsetki - co ma być dobrze i traktuję jako wartość kontrolną.

Sposób 2: kom.E19
Kod:
=OdestkiZWieluWpłat(B2:C11;D2)

Sposób 3: kom.E20
Kod:
=OdestkiZWieluWpłat2(B2:C11;D2)


Wszystkie wartości 1380,14

Teraz wytłumacz mi proszę zasadność Twójego komentarza.

Zeszyt1.zip
Pobierz Plik ściągnięto 64 raz(y) 45.45 KB

_________________
Tomek



Moja Stronka
APoCoTenExcel
Ostatnia aktualizacja: 2014-06-14
ID posta: 77353 Skopiuj do schowka
 
 
Giena123
Starszy Forumowicz


Posty: 52
Wysłany: 13-11-2009, 10:59   

Kolego [b]Tomku[b] kumam, kumam. Cały problem polega na tym, że są tylko trzy komórki z danym: Data początkowa, data końcowa i kwota, natomiast tablica z datami i wysokościami stóp% jest bo musi być - tak w Twoim rozwiązaniu w kodzie lub gdzieś w pliku w innym rozwiązaniu.
Twoja formuła "=OdestkiZWieluWpłat2(x:y;z)" uniemożliwia ograniczenie tablicy w kolumnach do dwóch dat np. 2008-01-01 (data początkowa) i 2009-11-14 (data końcowa) tak aby wynik był prawidłowy. Jak sama nazwa wskazuje jest sumą z wielu wpłat (czytaj danych). Dane powinny być ograniczone tylko do daty początkowej, końcowej i kwoty, natomiast w Twoim rozwiązaniu konieczne jest stworzenie tablicy z kwotą i kolejnymi datami wpłat. Tak więc przy okresie 36 m-cy (max.) taka tablica musi obejmować 36 wierszy w dwóch kolumnach i dodatkowo trzecia kolumna z datą końcową.
Twoje rozwiązanie jedynie zastępuje arkusz SZCZEGÓŁY DLA WPŁATY CYKLICZNEJ z mojego pliku, który w zasadzie nie jest potrzebny - lub tylko po to żeby można było pobrać z niego wynik do innego arkusza. Mój plik służył i służy mi tylko do testów i sprawdzania prawidłowości wyników bez wchodzenia na www i obliczania wysokości odsetek dla każdego okresu oddzielnie. Tak też należy go traktować.

Od samego początku chodzi o coś takiego, aby w jednym wierszu podając lub raczej pobierając z innych komórek dwie daty i kwotę można było w innej komórce ale co bardzo ważne tego samego wiersza uzyskać wynik dotyczący dat i kwoty pobranej tylko z tego wiersza. Jak będzie działało na jednym wierszu to przecież żaden problem skopiować do innych wierszy. To, że podałem miesiąc A i kolejno A+1 itd. jako kolejne daty początkowe miało jedynie uzmysłowić każdemu kto się podejmie tematu, że okresy A do B, A+1 do B muszą być jakoś, gdzieś liczone.
Wybacz ale Twojego rozwiązania nie da się wpisać w jedną lub dwie komórki jednego wiersza natomiast rozwiązanie z dodatkowym argumentem tak, mimo, że dalej zapis musi być ograniczony do sumy pierwszych 18 m-cy w jednej komórce i sumy kolejnych 18 m-cy w następnej komórce. Pobranie i zsumowanie wyników nie jest problemem.

I tak jestem pełen podziwu i wielki ukłon dla posiadanej przez Ciebie wiedzy.

Pozdrawiam.
_________________
Giena123
ID posta: 77371 Skopiuj do schowka
 
 
tkuchta1 
Excel Expert



Pomógł: 1693 razy
Posty: 2746
Wysłany: 13-11-2009, 15:23   

No nie da się człowiek przekonać :-) Może to i dobrze :lol:

Moim celem było napisanie uniwersalnej funkcji i uważam, że cel osiągnąłem. Co to znaczy wg mnie uniwersalna: że zarówno wpłaty jak i ich terminy nie muszą byc stałe. Najczęściej tak właśnie jest - sam niedawno robiłem podobne manerwy ale od odsetek ustawowych od niesłusznie potrąconych części wynagrodzeń na jakąś składkę ... mniejsza o to. (potrączenia różne, potrącane w dniu wypłaty - o dziwo dość nieliniowo) Co prawda funkcji nie pisałem bo szefowa musiała miec to na już no i jak bym coś sknocił (choć by przez małą ilość czasu na testy) byłoby na mnie, a tak odpowiedzianlość (żart oczywiście) wziął kalkulator na www.bankier.pl
Powiesz mi "Umowa" - OK. ALe jak termin wpłaty wypadł na sobotę i ktoś wpłacił 9'tego lub 12'stego i będzie się pultał że jemu wychodzą te odsetki inaczej to nie bedziesz mógł powiedzieć że taki jeden Tomek napisał mi taką funkcję i..., ale masz - niech bedzie "PoTwojemu" ;-)

Kod:
Function OdestkiZWieluWpłatPoTwojemu(Wpłata As Double, _
                                     dataWpłaty As Date, _
                                     naDzień As Date)

    Dim arrTablicaOdsetek As Variant, iArr As Long
    Dim IleDni As Integer, Dni As Integer
    Dim suma As Double

    arrTablicaOdsetek = Array(DateSerial(1995, 12, 15), 0.54, _
                              DateSerial(1997, 1, 1), 0.46, _
                              DateSerial(1998, 4, 15), 0.35, _
                              DateSerial(1999, 2, 1), 0.33, _
                              DateSerial(1999, 5, 15), 0.24, _
                              DateSerial(2000, 11, 1), 0.21, _
                              DateSerial(2001, 12, 15), 0.3, _
                              DateSerial(2002, 7, 25), 0.2, _
                              DateSerial(2003, 2, 1), 0.16, _
                              DateSerial(2003, 9, 25), 0.13, _
                              DateSerial(2005, 1, 10), 0.1225, _
                              DateSerial(2005, 10, 15), 0.135, _
                              DateSerial(2008, 12, 15), 0.115, _
                              naDzień, 0.13)
    Do Until dataWpłaty > naDzień
        For iArr = LBound(arrTablicaOdsetek) To UBound(arrTablicaOdsetek) Step 2
            IleDni = arrTablicaOdsetek(iArr) - dataWpłaty
            If IleDni > 0 Then
                IleDni = IleDni - Dni
                suma = suma + ((Wpłata * arrTablicaOdsetek(iArr + 1) / 365) * IleDni)
                Dni = Dni + IleDni
            End If
        Next
        Dni = 0
        dataWpłaty = DateSerial(Year(dataWpłaty), _
                                Month(dataWpłaty) + 1, _
                                Day(dataWpłaty))
    Loop
    OdestkiZWieluWpłatPoTwojemu = VBA.Round(suma, 2)

End Function


W moim załączniku formuła
Kod:
=OdestkiZWieluWpłatPoTwojemu(B2;C2;D2)

Pozostawiłem pozostałe funkcje żeby porównać wyniki lecz zauważ że f. "PoTwojemu" nie pobiera już zakresu wpłat a jednynie datę pierwszej i jej termin. Wpłata pozostaje ta sama a dataWpłaty = dataWpłaty + 1m do momentu kiedy termin naDzień < dataWpłaty. (pętla Do Until ... Loop)

Zeszyt1.zip
Pobierz Plik ściągnięto 117 raz(y) 46.73 KB

_________________
Tomek



Moja Stronka
APoCoTenExcel
Ostatnia aktualizacja: 2014-06-14
ID posta: 77402 Skopiuj do schowka
 
 
Giena123
Starszy Forumowicz


Posty: 52
Wysłany: 13-11-2009, 15:56   

SUPER !!! - właśnie o coś takiego mi chodziło mimo, że jest jakiś mały błąd bo za okres od 01-01-2008 do 31-10-2009 jest różnica -0,06 zł. Powinno być 264,99 a wychodzi 264,93.
Mam nadzieję, że wpisując kolejne krótsze okresy sam znajdę w czym jest problem.

Tak czy inaczej OGROMNE DZIĘKI !!!


Pozdrawiam.
_________________
Giena123
ID posta: 77407 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum


Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.