Nie liniowe pobieranie danych
Nie liniowe pobieranie danych
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?
LibreOffice/OpenOffice w miarę możliwości najnowsze , Windows 7.
Re: Nie liniowe pobieranie danych
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.
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.
- Załączniki
-
- aruszaba.ods
- (10.36 KiB) Pobrany 101 razy
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Re: Nie liniowe pobieranie danych
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łę:
Lub gdy dane będą w jakimś innym arkuszu (Arkusz1 to nazwa arkusza z którego mają zostać pobrane dane):
i przeciągnij ją w dół.
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)))
Kod: Zaznacz cały
=ADR.POŚR("$Arkusz1.A"&(2+7 * (WIERSZ(A1)-1)))
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Re: Nie liniowe pobieranie danych
Dzięki za pomoc.
Ostatnio zmieniony czw sie 25, 2022 4:24 pm przez aruszaba, łącznie zmieniany 1 raz.
LibreOffice/OpenOffice w miarę możliwości najnowsze , Windows 7.
Re: Nie liniowe pobieranie danych
Dziękuję za zainteresowanie moim problemem, oby dwa rozwiązania są bardzo pomocne myślę że teraz sobie poradzę z tym. Dziękuję
orazJermar
za okazaną pomoc. Problem rozwiązany.Rafkus
LibreOffice/OpenOffice w miarę możliwości najnowsze , Windows 7.