Like

Dostajesz od mamy listę zakupów. Ale potem dostajesz ją jeszcze raz. Wygląda niby tak samo, ale wyłapujesz pierwszą różnicę. Zamiast pietruszki jest rzodkiew, a zamiast cebuli butelka whisky. Ktoś w liście majstrował… Część pozycji jest poprzestawiana. Jak to ogarnąć by wyłapać wszystkie różnice i nie osiwieć?

Jeśli nie chcesz czytać, możesz od razu przejść do pliku roboczego i obejrzeć formuły.

Oto nasze listy:

Porównaj dwie listy stawiając je obok siebie i podświetlając różniące się komórki.

Prosta operacja, która pozwoli wyłapać, gdzie są zmienione wartości. Możemy ją wykonać poprzez formatowanie warunkowe.

Zaznaczamy interesującą nas kolumnę, wybieramy Menu –> Formatowanie warunkowe
Wybieram pierwszą kolumnę (B3:B37) i jako niestandardową formułę wpisuję =b3:b<>c3:c . Oznacza to, że dla każdej komórki z kolumny B arkusz sprawdzi, czy przypadkiem nie jest ona różna od komórki w kol. C. Przejdzie po kolei.

Jak znaleźć elementy, które są tylko na jednej z list?

W tym celu użyjemy połączenia funkcji countif i if:

=ArrayFormula( if(countif(C2:C;B2:B)=0; B2:B; “” ) ) – wypisuje po kolei wszystkie elementy, które są w kolumnie B, a nie ma ich w kolumnie C.

Jak to działa?

Formuła Countif zlicza wszystkie elementy spełniające określony warunek. Składnia: COUNTIF(zakres;warunek)

W tym wypadku sprawdzamy po kolei dla każdego elementu z kolumny B, ile jest identycznych elementów w kolumnie C. Jeśli jest ich zero to wypisujemy ten element, a jeśli countif znajdzie jeden lub więcej, zostawia puste miejsce (“”). ARRAYFORMULA pozwala wykonać test dla całej kolumny.

Jeśli chcemy by spis nie zawierał pustych komórek, tylko by wszystkie elementy występujące raz, pojawiły się na górze, możemy dołożyć jeszcze funkcję Query, która wytnie puste komórki:

=query(formuła generująca listę;”select Col1 where Col1 <>” “) – formuła query bierze listę i wypisuje jej pierwszą kolumnę (Col1) pod warunkiem, że nie jest ona pusta (Col1 <> ”) – ” to są dwa pojedyncze cudzysłowy, a nie jeden podwójny – tylko tak możemy używać cudzysłowów wewnątrz nadrzędnych cudzusłowów).

Jak zrobić sumę dwóch list?

Chodzi o sytuację, gdy ktoś pozamieniał jakieś elementy, a zależy nam na tym, żeby mieć zarówno starą zawartość jak i nową w jednym miejscu zsumowaną.

Żeby napisać odpowiednią formułę, pomyślałem o tym jako o sumie dwóch zbiorów z wyeliminowaniem duplikatów.

Używam w tym celu funkcji UNIQUE, która eliminuje z zakresu danych duplikaty. Ale nie mogę podstawić dwóch kolumn obok siebie (B2:C). Muszę je ułożyć w jednej kolumnie. Używam do tego zapisu klamrowego {B2:B;C2} (szerzej o nim osobnym wpisie). I… gotowe!

=unique({B2:B;C2:C}) – układa zawartość w jednej kolumnie, a następnie eliminuje duplikaty. Ta pusta przestrzeń w wierszu 37 to wszystkie puste komórki.

Jak odnaleźć elementy, które zostały przesunięte?

Jeśli listy są szczególnie długie, a ktoś poprzestawiał elementy, możemy pomóc sobie poprzez wskazanie ich pozycji na nowej liście.

=ArrayFormula(ifna( match(B2:B;C2:C;0) ))

Kluczowa jest tutaj formuła MATCH (IFNA służy jedynie do zastąpienia komunikatów o błędach pustymi komórkami, a ARRAYFORMULA pozwala poszerzyć działanie MATCH na cały zakres).

MATCH(B2:B;C2:C;0) bierze po kolei każdą komórkę z zakresu B2:B i sprawdza jej pozycję w zakresie C2:C i podaje ją. Dzięki temu szybciej możemy ją odnaleźć.

Co zrobić gdy porównujemy listy składające się z większej liczby kolumn?

Jeśli mamy przykładowo dwie listy z imionami i nazwiskami, najlepiej najpierw skleić te kolumny tak, by imiona i nazwiska były w tej samej komórce.

=ArrayFormula(L3:L&” “&M3:M) jedna formuła łączy wszystkie komórki z kolumny L z odpowiadającymi im komórkami w kolumnie M. Pomiędzy imię i nazwiska wstawia jeszcze spację (stąd ten ” ” pośrodku).

Dalej możemy już postępować tak jak w pozostałych przypadkach. O łączeniu komórek możesz przeczytać więcej w osobnym wpisie.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.