Moje doświadczenia z Excelem, Accesem i programowaniem w VBA

Wpisy z tagiem: raport

poniedziałek, 26 kwietnia 2010

W swojej codziennej pracy często muszę szybko zrobić statystyki z pracujących w trybie wielodostępu plików na serwerze. Kilku różnych użytkowników edytujących poszczególne komórki, dodających kolejne wiersze do tabeli.
Najprostszym rozwiązaniem byłaby tabela przestawna, ale w plikach udotępnionych - nie działa, więc nie można jej tu wykorzystać. Jak sobie poradzić?
Ja na swoim komputerze zakładam nowy plik, kopiuję nagłówek, a w kolejnych wierszach - wstawiam łącza do pliku na serwerze.
Posłużę się tu już wcześniejszym przykładem katalogu książek. Jego pełna nazwa (wraz z ścieżką dostępu na moim komputerze) to:
E:\serwer\Katalog.xls

katalog

W moim pliku statystyk
(C:\Documents and Settings\Desktop\Statystyki_katalogu.xls)
pierwszy wiersz to również nagłówek, a kolejne komórki tworzę wpisując łącza do pliku Katalog.xls.
Na wszelki wypadek wyjaśniam, że najprościej to zrobić w ten sposób, że mając jednocześnie otwarte obydwa te pliki, w komórce A2 w pliku Statystyki_katalogu wpisuję znak równości, przechodzę do pliku Katalog, również do komórki A2 i wciskam Enter.
W komórce pojawi sie wartość 1, a w polu formuły pojawia się:
=[Katalog.xls]spis!$A$2
Wpisany adres jest adresem bezwzględnym. Skopiowanie formuły do kolejnej komórki - nie zmieni jej. Konieczne jest więc wycięcie znaków $
Po korekcie:
=[Katalog.xls]spis!A2
Skopiowana w ten sposób komórka A2 na całą tabelę - przeniesie odpowiednie wartości odowiednich komórek w odpowiednie miejsca.
Jest jeszcze jeden problem. Jeżeli jakaś komórka w pliku źródłowym będzie pusta - to w pliku statystyk pojawi się zero. Spowoduje to zaciemnienie obrazu tabeli, a w wielu przypadkach - zafałszowanie statystyk. Zero jest też wartością, niekiedy bardzo istotną.
Ja radzę sobie za pomocą funkcji Jeżeli...to  
=JEŻELI([Katalog.xls]spis!A2="";"";[Katalog.xls]spis!A2)
Jeżeli wartość komórki A2 (w pliku Katalog) jest pusta (oznaczamy to podwójnym cudzysłowem) - to wstaw "nic" (podwójny cudzysłów), w przeciwnym przypadku - wstaw wartość komórki A2.
I już.
Przy otwarciu pliku Statystyk będzie pojawiał się komunikat informujący o łączach i pytanie, czy zaktualizować ich wartość.

aktualizacja łączy

Plik statystyk jest gotowy do analizy.

czwartek, 18 lutego 2010

Funkcja logiczna "Jeżeli...to..." jest jedną z moich ulubionych i czesto wykorzystywanych. Zsada jej działania jest prosta. Jeżeli jakiś warunek jest spełniony - to komórką z wstawiona formułą ma jedną wartość , jeśli nie jest - inną.

Jeżeli..to...

Wyobraźmy sobie prosty przykład, że komórka A1 ma sprawdzać znak liczby w komórce B1. W  Test_logiczny wpisujemy (można też zaznaczyć komórkę) B1<0. W polu Wartość_jeżeli_prawda "-" (znak minusa w cudzysłowie, gdyż ten minus stanowi w tym przypadku tekstowy znak graficzny. Analogicznie w polu Wartość_jeżeli_fałsz "+".  Potem wystarczy tylko kliknąć przycisk OK.

Zapis  formuły wyglądać będzie tak:
=JEŻELI(B1<0;"-";"+")
Na czerwono zaznaczyłam średniki - oznaczają one koniec poszczególnych pól formuły. Widać ten zapis także w arkuszu, w polu formuły.

Funkcja Jeżeli to

A od strony praktycznej - lubię tę funkcję i często z niej korzystam do tworzenia raportów. W jaki sposób? W pracy sporo pracujemy na udostępnionych plikach Excela na serwerze. Są to arkusze z dużą ilością modyfikowanych i dodawanych danych, nawet ilośc wierszy ulega zmianie. Dołożenie jeszcze dodatkowych raportów - stanowiłoby niepotrzebne obciążenie. Tabeli przestawnej w ogóle nie da się stworzyć i uaktualnić w arkuszu udostępnionym. W takich przypadkach na swoim komputerze tworzę osobny skoroszyt raportów i wstawiam łącza do poszczególnych komórek pliku źródłowego. Problem jednak w tym, że proste łącze:
=[Plik_zrodlowy.xls]Arkusz!$A$1
i analogicznie - w pozostałych komórkach - wszędzie tam, gdzie w pliku źródłowym jest pusta komórka - łącze wskaże "0". Zero jednak też jest wartością i może to całkowicie zafałszować raport. I w tym momencie - korzystam właśnie z funkcji Jeżeli... to...
W pliku raportu, w komórce A1 wstawiam funkcję:
=Jeżeli(Plik_zrodlowy.xls]Arkusz!A1="";"",[Plik_zrodlowy.xls]Arkusz!A1)
Jak to czytać? Jeżeli komórka A1 w pliku żródłowym jest pusta (dwa znaki cudzysłowu obok siebie - "" - to oznaczenie pustego łańcucha tekstowego) - to wynik formuły jest też pusty. W przeciwnym przypadku (wartość jeśli fałsz) - wynkiem komóki jest wartość komórki pliku źródłowego.
Metoda wielokrotnie sprawdzona i wykorzystywana. Nawet nie muszę pilnować ilości wierszy - i tak pokażą się tylko te potrzebne.

| < Listopad 2017 > |
Pn Wt Śr Cz Pt So N
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      


Książki warte polecenia
zobacz szczegóły...


A tu oferta na dziś:





ministat liczniki.org



Napisz do mnie!