Strona 1 z 1

Nie liniowe pobieranie danych

: śr sie 24, 2022 3:28 pm
autor: aruszaba
Witam wszystkich forumowiczów. Prowadzę własną działalność i posiłkuję się OF do zobrazowania biznesu. Zrobiłem sobie arkusze na każdy miesiąc i tam wpisuję min. datę oraz obrót każdego dnia (wpisuję też koszty ale nie o tym). Wpadłem na pomysł aby zrobić arkusz z tymi danymi ale podzielony na tygodnie i sprawdzić w jakie dni był najlepszy obrót. Tabela standard 7x53 - PN-N w 7 kolumnach i 53 wiersze jako nr tygodnia (taki jakby kalendarz z obrotami). Moje pytanie: czy jest jakiś automatyczny sposób na pobieranie danych nie liniowo np. co siedem wyników? Czy np. jakieś makro aby w B2 pobrać dane z A2, a w B3 dane z A8 itd. Czy jedynym sposobem jest wklepywanie tego ręcznie?

Re: Nie liniowe pobieranie danych

: śr sie 24, 2022 10:43 pm
autor: Jermor
Zaproponuję ci rozwiązanie chyba prostsze. Załączam je w dołączonym pliku.
Plik składa się z trzech arkuszy. Pierwszy to "Rejestr dzienny". Zawiera kolumnę data i utarg.
Dla łatwiejszego tworzenia formuły obszarowi z datami od A2:A400 nadałem nazwę "dni", natomiast obszarowi z kwotami B2:B400 nadałem nazwę "Utarg". Równie dobrze można dodać nową kolumnę "koszty".
Ponieważ napisałeś, że gromadzisz dane codziennie zbiorczo, to wystarczy na to 399 wierszy (rok ma 365 lub 366 dni).
Tutaj tylko wpisujesz datę i kwotę.
Arkusz "Miesięcznie" wykorzystuje 12 kolumn (każda na jeden miesiąc). Pod każdym miesiącem formuła macierzowa wylicza wartość utargu w danym miesiącu.
Trzeci arkusz to arkusz "Tygodniowe". Tutaj był problem, co oznacza tygodniowo. Pierwszy tydzień w roku kalendarzowym to taki, w którym wypadają przynajmniej cztery dni roku, ostatni tydzień w roku, to ten, w którym wypadają cztery dni tego roku. To znaczy, że jeśli 1 stycznia wypadnie później niż w czwartek, to on i kolejne dni do niedzieli włącznie są zaliczane do ostatniego tygodnia roku poprzedzającego. Analogicznie z ostatnim tygodniem. Jeśli 31 grudnia wypadnie wcześniej niż w czwartek, to dni od poniedziałku do ostatniego dnia roku zaliczane są do pierwszego tygodnia roku następnego.
Ja zastosowałem następujące rozwiązanie: Tydzień zaczyna się 1. stycznia roku, czyli do twoich rozliczeń zależy od daty, a nie od dnia tygodnia. W arkuszu w kolumnie A automatycznie wygenerowane zostają daty rozpoczynające kolejny tydzień. Pierwszy stycznia wyznaczany jest dla roku wynikającego z pierwszego wpisu w "Rejestrze dziennym" (chodzi o właściwe wyznaczenie kolejnych tygodni, gdy wystąpi rok przestępny). W kolumnie "obrót" wpisana jest formuła macierzowa wyliczająca sumaryczną kwotę, tych zapisów, których data jest większa lub równa początkowi tygodnia i mniejsza od daty rozpoczynającej następny tydzień. To dlatego po ostatnim tygodniu pojawia się dodatkowy wiersz z datą.
W analogiczny sposób możesz uzyskać zestawienie kosztów.
W arkuszu "Rejestr dzienny" nie musisz wpisywać danych w porządku dat.
Ponadto mając bazę rejestrową możesz, wykorzystując filtry, tabele przestawne czy funkcje warunkowe otrzymywać różnego rodzaju zestawienia zbiorcze.

Re: Nie liniowe pobieranie danych

: śr sie 24, 2022 10:53 pm
autor: Rafkus
Jest to możliwe wykorzystując funkcję ADR.POŚR - zwraca odwołanie określone przez jakiś ciąg tekstowy np, taka formuła: =ADR.POŚR("A2")zwróci wartość z komórki A2. Użycie ciągu tekstowego pozwoli na stworzenie pewnej formuły obliczającej kolejne wybrane adresy.

Aby rozwiązać twój problem, do komórki B2 wklej poniższą formułę:

Kod: Zaznacz cały

=ADR.POŚR("A"&(2+7 * (WIERSZ(A1)-1)))
Lub gdy dane będą w jakimś innym arkuszu (Arkusz1 to nazwa arkusza z którego mają zostać pobrane dane):

Kod: Zaznacz cały

=ADR.POŚR("$Arkusz1.A"&(2+7 * (WIERSZ(A1)-1)))
i przeciągnij ją w dół.

Re: Nie liniowe pobieranie danych

: czw sie 25, 2022 4:13 pm
autor: aruszaba
Dzięki za pomoc. :super:

Re: Nie liniowe pobieranie danych

: czw sie 25, 2022 4:21 pm
autor: aruszaba
Dziękuję za zainteresowanie moim problemem, oby dwa rozwiązania są bardzo pomocne myślę że teraz sobie poradzę z tym. Dziękuję
Jermar
oraz
Rafkus
za okazaną pomoc. Problem rozwiązany. :bravo: :D