Temat: jak sprawdzić że komórka została zmieniona ?
Ja (wiadomo gdzie) stosuję taki patent, znaczy ALGORYTM:
Mam funkcję w arkuszu, która coś liczy: odwołuje się do danych zewnętrznych, więc liczy długo, np. 1/10 s.
Takich funkcji w arkuszu jest 100 - razem 10 s. Długo, jak na 1 arkusz i taką małą tabelkę.
Ale, przecież 90 % funkcji to dane już "zamknięte", czyli nie trzeba ich za każdym razem pobierać z bazy, nawet z hurtowni, bo hurtownia to też baza zewnętrzna. Lepsza, bliższa, ale dalej zewnętrzna.
Więc, robię mniej więcej tak, jak kolega Michał, tylko "bardziej":
Tworzy się drugi arkusz, ja nazywam to "Archiwum" - coś się tam przyciska i jest.
A funkcje działają tak:
Każda z nich tworzy jakieś zapytanie bazodanowe, które w tym archiwum zapisuje się w komentarzu. Wartość w komórce, info 'jak jest ta wartość jest liczona' - w komentarzu.
Funkcja, zanim policzy wartość, każdorazowo sprawdza, czy ma odpowiednik w archiwum.
Ma (tzn. jej zapytanie jest równe zapytaniu w komentarzu w archiwum)? - pobiera wartość z archiwum
Nie ma, ale archiwum jest - pisze, że coś nie gra z archiwum
Nie ma, ale archiwum też nie ma - liczy się normalnie
Wydajność: 10-20 - krotne (średnio, zależy od komplikacji zapytania - proste zapytania to mniejszy 'zysk') przyspieszenie obliczeń, a o to, zdaje się, ci chodzi.
Czyli taki arkusz, jak wyżej: 0,5 do 1,5 s. Jak Excel.
P.S.
Jest jeszcze dodatkowa zaleta tego patentu - przecież te archiwa to "magazyny definicji raportowych".
Więc można je przeliczać programowo - gdy analitycy jeszcze smacznie śpią. Gotowa procedurka "przeczesuje" sieciowe katalogi analitykow, jak w jakimś skoroszycie znajdzie archiwum, to przeliczy jego wartości, zgodznie z zapisanymi w komentarzach, definicjami. Analityk przychodzi do pracy, robi kawę, otwiera skoroszyt, a funkcje OD RAZU przeliczają mu się 20 razy szybciej.
Tu przykład (wartości sie rozjadą, ale chodzi o formułki):
http://afin.net/samples/Archive/Wojciech Gardziński edytował(a) ten post dnia 04.09.09 o godzinie 09:55