Kategorie szkoleń | Egzaminy | Kontakt
  • 2
  • 1
  • 1

Proszę o pomoc w następującym zadaniu.

Mam raport z listą pracowników, dla których zostały wygenerowane paski płac.

Niestety w przeszłości zdarzało się, że system wygenerował pasek płacowy wiele razy dla jednego pracownika, co jest błędem i chodzi mi o wyłapanie takich błędów.

Każdy pracownik ma swoje ID1 (które jest punktem odniesienia) oraz ID2 z systemu, które z pewnymi wyjątkami powinny korespondować ze sobą. Jeśli rekordy dla jednego pracownika (sprawdzane wg Id1) powtarzają się, to znaczy, że pracownik może mieć długi pasek, który ma np. 2 lub więcej stron i każdej stronie odpowiada jeden wiersz.

Id1 i Id2 mogą być różne dla podwójnych rekordów, jeśli pracownik pracował w różnych spółkach - to też jest poprawne.

Nie jest poprawne, jeśli np. dla Id1 jest więcej niż jeden rekord+Id2 są różne + Spółka jest dla niego zawsze taka sama.

Dokładniejszy opis znajduje się w załączonym pliku.

Z góry dziękuję za pomoc.

 

 

Załączniki

  • xlsx

    controllo_lul_201811_Altkom.xl... ( 11K )
Barbara_Klamka_vfzf
  • Zapytał
  • @ Barbara_Klamka_vfzf | 14.12.2018
    • 0
    • 0
    • 0
Zaloguj się aby zadać pytanie
Pokrewne

Odpowiedzi (2)

  • 1

Wklej poniższą formułę w G2, zatwierdź przez ctrl+shift+enter i skopiuj w dół:

=JEŻELI(MIN(JEŻELI(B2&C2=$B$2:$B$14&$C$2:$C$14;--(D2=$D$2:$D$14);""));"ok";"błąd")
Mirosław_Janiak
  • Odpowiedział
  • @ Mirosław_Janiak | 15.12.2018
    • 1
    • 7
    • 1
Komentarze
Dziękuję bardzo!
Czy mogę jeszcze prosić o wyjaśnienie działania funkcji? Do tej pory nie używałam na codzień formuł tablicowych. Może być też filmik, jeśli któryś może Pan polecić.
Skomentował : @ Barbara_Klamka_vfzf ,24.12.2018
  • 0
  • 0
  • 0
  • 0

Dodaję opis formuły w kolejnej odpowiedzi, będzie bardziej widoczny i może jeszcze komuś się przyda. :)

Celem zadania jest ustalenie, czy dla każdego ID1 w danej spółce występuje tylko jedno ID2. Wymyśliłem więc, że wyciągnę wszystkie ID2 należące do połączonych ciągów z kolumn ID1 i Spółka, a następnie sprawdzę, czy wśród nich są jakieś różniące się od tego z bieżącego wiersza.

B2&C2=$B$2:$B$14&$C$2:$C$14

Ten fragment realizuje pierwszą część mojego założenia. Na przykładzie drugiego wiersza: tworzy ciąg SNTSRG59D24A794Q401 z komórek B2 i C2, a następnie porównuje go do pozostałych wierszy. W efekcie powstaje taka tabelka:

SNTSRG59D24A794Q401    = SNTSRG59D24A794Q401  -> PRAWDA
SNTSRG59D24A794Q401    = SNTSRG59D24A794Q405  -> FAŁSZ
SNTSRG59D24A794Q401    = CRRMRZ60D22A246Y401  -> FAŁSZ
    ...    

Wynik trafia do funkcji JEŻELI, czyli w mojej formule w przypadku PRAWDY przechodzimy do drugiego porównania, a każdy FAŁSZ zwraca pusty ciąg. Można to przyrównać do nałożenia filtru na kolumny B i C.

--(D2=$D$2:$D$14)

Tutaj na podobnej zasadzie sprawdzam, czy ID2 z drugiego wiersza jest takie samo, jak w pozostałych, ale już tylko w tych wierszach, w których wcześniejsze porównanie zwróciło PRAWDĘ (czyli dla bieżących ID1 i Spółki). "--" na początku powoduje, że zamiast PRAWDA/FAŁSZ otrzymam 1/0 (identyczny wynik da przemnożenie przez jeden lub dodanie zera) - jest to konieczne do prawidłowego zadziałania funkcji MIN.

JEŻELI(B2&C2=$B$2:$B$14&$C$2:$C$14;--(D2=$D$2:$D$14);"")

Wynikiem całej funkcji JEŻELI będzie zatem tablica z jedynkami tam, gdzie ID2 jest takie samo jak to z bieżącego wiersza i z zerami tam, gdzie jest inne - ale tylko w rekordach z taką samą kombinacją ID1 & Spółka (pozostałe będą puste). I tu wkracza funkcja MIN, która w zasadzie ma jedynie sprawdzić, czy w całym tym zbiorze wystąpiło jakieś zero. Reszta jest już chyba jasna. :)

Z dodatkowych materiałów dydaktycznych - poza szkoleniami w samym Altkomie, rzecz jasna :) - polecam kanał Piotra Majchra (pmsocho) na youtubie. Ten film dotyczy formuł tablicowych.

Mirosław_Janiak
  • Odpowiedział
  • @ Mirosław_Janiak | 27.12.2018
    • 1
    • 7
    • 1