Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Porównywanie arkuszy i wypisywanie/... identycznych rekordów w OpenOffice Calc

26 Mar 2012 13:08 3899 7
  • Poziom 14  
    Witam, mam problem z którym nie mogę sobie poradzić.
    Posiadam dwa arkusze w Calc Open/Libreoffice (pierwszy arkusz = osoby wyciągnięte z jednej bazy danych, drugi arkusz = osoby wyciągnięte z drugiej bazy danych) i w każdym arkuszu mam rekordy składające się z wierszy Imię i nazwisko oraz PESEL.
    Mój problem polega na tym, że nie wiem jak wyciągnąć wspólne osoby z jednego i drugiego arkusza i zapisanie ich gdzieś. Niby zadanie łatwe ale w praktyce nie wiem jak to zrobić, a jest tu ponad 20 tyś rekordów.
    Proszę o pomoc.

    Dla lepszego zobrazowania wygląda to mniej więcej tak:
    Arkusz 1:
    A B
    Adamek Rafał 856...
    Baran Tomek 888...
    Bogucki Tomek 888...
    Władowski Marian 9999..
    Zawora Marcin 8878....

    Arkusz 2
    A B
    Abicki Adam 856...
    Baran Tomek 888...
    Rutkowski Elwin 756...
    Ważny Marian 9999..



    No i ciekawi mnie wyciągnięcie z tego przypadku osoby wspólnej czyli Baran Tomek
  • Moderator Programowanie
    Dla najlepszego zobrazowania wrzuciłbyś plik z przykładem ;)

    Można wyznaczyć kolumnę pomocniczą z WYSZUKAJ.PIONOWO i MAX+1, następnie pozbierać "gdzieś": INDEKS(zakres;PODAJ.POZYCJĘ(WIERSZ();k.pom...

    Kilka przykładów znajdziesz na forum.
  • Poziom 14  
    Wdzięczny jestem za pomoc ale niewiele rozumiem z tego co mi napisałeś.
    Stworzyłem przykładowy arkusz przedstawiający mój problem.
  • Poziom 14  
    To ciężki kawałek chleba, excel wbrew pozorom jest ciężki. To co podałeś mi nie działa prawidłowo niestety, ponieważ zwróciło Kowalkiego Michała w trzecim (wspólnym) arkuszu, a nie powinno bo w 1-szym arkuszu tej osoby nie ma.
    Programowałem kiedyś i wiem jak to w teorii można by zrobić, ale w praktyce ciężko bo nie widzę chociażby funkcji for w calcu.

    W teorii mogłoby to być tak, że porównujemy każdy element z 1-go arkusza z każdym w drugim arkuszu i jeżeli jest równość to zapisujemy do 3-go arkusza.
    For i=1 to 15000 do (for k=1 to 8000 do (jeżeli arkusz1.Ai = arkusz2.Ak to ZAPISZ_DO_ARKUSZ3)
    gdzie 'i' to kolejne elementy pierwszego arkusza w którym jest 15000 rekordow, a 'j' to kolejne elementy drugiego arkusza mającego 8000 rekordów.
  • Moderator Programowanie
    Wyszukiwanie jest po PESEL. Będzie łatwiej jeśli jeden PESEL będzie należał do jednej osoby...
  • Poziom 14  
    Tak wiem i owszem zgadzam się, ale nie można traktować tego jako pewnika w tym przypadku z tego powodu, że nie wszystkie osoby posiadają w bazie z pewnych względów PESEL.

    Mógłbyś mi jeszcze powiedzieć co oznaczają $ w funkcjach? :)
  • Poziom 14  
    Tak więc rozwiązałem problem sam, a co ciekawsze rozwiązanie jest tak banalne, że wstyd :)
    1. wrzucamy jedną i drugą bazę do jednego arkusza (najlepiej by w kolumnie było zawarte od razu imię i nazwisko, a nie rozdzielone na osobną dla imienia i nazwiska)
    2. sortujemy rekordy (z menu 'dane' wybieramy opcję 'sortuj' w LibreOffice/ OpenOffice)
    3. dodajemy funkcję
    Code:
    =JEŻELI(C1=C2;"dubel";"")

    czyli porównanie danego rekordu z następnym.
    a na końcu możemy zliczyć ilość wystąpień wyrazu 'dubel' i wsio