Witam.
Do tego nie jest potrzebne makro, tylko niezbyt skomplikowana formuła (funkcja). W takim układzie tabeli potrzebuje Kolega skorzystać z trzech funkcji: MAX, PODAJ.POZYCJĘ, INDEKS - po ich odpowiednim złożeniu uzyska Kolega (w przypadku tego konkretnego przykładu) datę 1995-02-07, która odpowiada najwyższej liczbie 78.
No cóż - na gotowca nie licz, ale jak gdzieś utkniesz to pisz śmiało, ktoś na pewno pomoże. Ewentualnie przedstaw wyniki swoich aktualnych prac nad tym niezbyt skomplikowanym makro.
Ale w czym mamy ci pomóc?
Czego nie rozumiesz?
Masz napisać makro więc pisz.
Jeżeli masz zaliczenie to na pewno miałeś też przekazywaną wiedzę jak coś podobnego robić.
Postępuj tak jak masz w notatkach i jeżeli coś ci nie wyjdzie zapytaj o konkret pokazując co już osiągnąłeś.
dt1 Kolega zauważy ze autorowi chodzi o sumę z dnia, więc może się zdarzyć że suma z danego dnia przewyższy "pojedyncze" maksimum więc jeszcze trzeba by było wykorzystać suma.jeżeli()
Ale to tylko tak na marginesie.
dodane po chwili
----------------------------
wyprzedziłeś mnie
założyłem sobie tak że wykorzystując funkcję "suma_wydatki" oblicze sobie wpłaty dla "podanego dnia". Ten "podany dzień" byłby następnie wykorzystywany w samym makro, na zasadzie takiej że biorę po kolei dni tygodnia powiedzmy od i=1 do n i sumuję dla nich wartości, a następnie wyznaczam max. Może moje założenie jest błędne, jak jest jakaś inna możliwość to będę wdzięczny na naprowadzenie mnie na rozwiązanie
Do autora:
Jak zauważyłeś twoja funkcja działa - więc już połowa sukcesu.
(na marginesie zmienna "dzień" to nie to samo co zmienna "dzien"więc akurat ten kod który przedstawiłeś nie powinien działać ale ...)
Przechodzimy do koncepcji i twojej procedury głównej.
Bardzo dobrze pomyślałeś (dobra w tym przypadku koncepcja) że "biorę po kolei dni tygodnia powiedzmy od i=1 do n i sumuję dla nich wartości, a następnie wyznaczam max. " tylko nie do końca przełożyłeś to na kod.
Zacznijmy od początku.
Masz funkcje która wylicza kwotę na dany dzień.
Trzeba więc teraz zrobić pętlę by wyliczyć tą kwotę dla każdego dnia.
Twoje podejście jest wg. mnie ok tylko że chyba się troszeczkę pogubiłeś (lub -za co jeżeli nie to przepraszam - nie ty jesteś twórcą tej funkcji którą przedstawiłeś).
Po pierwsze musisz sprawdzić wszystkie daty z zakresu wiec pętla nie powinna być na zmiennej "kwota" tylko na "daty". Prawdę mówiąc nic to nie zmienia, jednak jest bardziej czytelne. Pętla więc powinna być
Code: vb
Log in, to see the code
Tu następuje pierwsze pytanie skąd procedura ma posiąść wiedze na temat zmiennej "daty". Przy wykorzystaniu funkcji w arkuszu excela sam ją wskazujesz (zaznaczasz myszą), tu jednak musisz z góry ustalić (lub wykorzystać zdefiniowaną nazwę zakresu - o czy myślałem że masz wiedzę)
Więc jeżeli daty to zakres dat to musimy to podać (bez zdefiniowanych zakresów komórek)
Teraz nasz kod powinien wyglądać:
Code: vb
Log in, to see the code
ok. wiemy że zakres od A1 do A 10 zostanie przeanalizowany
Teraz w pętlę wrzucimy twoją funkcję a wyniki będą wpisywane w zmiennej "m". Na marginesie należy zdefiniować też zmienną "kwoty" która określa zakres komórek z kwotami, inaczej nie zadziała.
Code: vb
Log in, to see the code
Teraz mamy zmienną "m" która ma wartości sum dla kolejnego dnia. Warto więc w tak zwanym "między czasie" sprawdzać czy dana wartość to maksimum (tak jak zaplanowałeś) [wcześniej zerując maksimum]
Jeżeli wyliczona wartość jest większa od "max" to zapisz do zmiennej "max".
Code: vb
Log in, to see the code
Po wykonaniu mamy najwyższą wartość, ale który to dzień ?
Warto więc w dodatkowej zmiennej zapisać która to data pozwoliła spełnić warunek "max"
Code: vb
Log in, to see the code
teraz już zostaje wkazać efekty obliczeń czyli msgbox no i oczywiście wcześniejsza deklaracja zmiennych więc:
Code: vb
Log in, to see the code
Tak dla zasady zwróć uwagę co ci sugerowałem wcześniej.
----------------------------
Jeżeli nie wykorzystasz próby przekazania wiedzy a wyłącznie "gotowca" będziesz miał straszne koszmary nocne - zaufaj mi - do tej pory nawet nie wiesz co to strach.