Masz dwie listy w Google Sheets. Jedna to zapisani uczestnicy, druga to osoby, które opłaciły udział. Liczby „powinny” się zgadzać, ale się nie zgadzają. Albo porówniasz listę produktów z magazynu z eksportem ze sklepu i widzisz, że czegoś brakuje, chociaż na pierwszy rzut oka wszystko wygląda podobnie. W takich sytuacjach problem rzadko polega na samym arkuszu. Częściej chodzi o to, że porównujesz dane inną metodą, niż wymaga tego zadanie.
porównywanie list Google Sheets, duplikaty w Google Sheets, braki między listami, formatowanie warunkowe Google Sheets, formuły do porównania kolumn, różnice między listami, czyszczenie danych w arkuszu, spacje i wielkość liter, porównanie całych wierszy, kolumna status w Sheets, lista uczestników i płatności, produkty z dwóch źródeł
Dwie listy wyglądają podobnie, a wynik się nie zgadza
Typowy punkt wyjścia: „liczby powinny się zgadzać, ale się nie zgadzają”
To bardzo częsta sytuacja. W jednej kolumnie masz 150 adresów e-mail zapisanych osób, w drugiej 148 adresów osób, które wykonały płatność. Naturalna reakcja? Szukasz dwóch braków. Tyle że po chwili okazuje się, że nie chodzi tylko o dwa braki. Jedna osoba mogła zostać wpisana dwa razy, jedna ma spację na końcu adresu, a jeszcze inna użyła innego zapisu nazwiska lub maila. Z pozoru to tylko „dwie listy”, ale w praktyce masz kilka różnych problemów naraz.
Podobnie bywa przy produktach. W magazynie widzisz kod ABC-123, a w eksporcie sklepu abc-123 ze spacją na końcu. Dla oka to prawie to samo. Dla Google Sheets to już nie zawsze identyczna wartość. Jeśli od razu uruchomisz porównanie bez przygotowania danych, dostaniesz wynik pełen fałszywych alarmów.
Jaki masz cel? To pierwsze pytanie, które porządkuje cały proces. Chcesz sprawdzić, czy komórka A2 jest taka sama jak B2? A może interesuje cię tylko to, czy wartość z A2 występuje gdziekolwiek w drugiej liście? To nie jest drobna różnica. To dwa zupełnie różne typy porównania.
Skąd bierze się chaos przy prostym zadaniu
Początkujący użytkownicy często zakładają, że jeśli dwie listy zawierają podobne dane, można je porównać „wiersz do wiersza”. Problem w tym, że kolejność rekordów bywa inna. Jedna lista mogła zostać posortowana alfabetycznie, druga według daty zgłoszenia. Wtedy porównanie A2 do B2 pokaże masę błędów, mimo że te same wartości naprawdę istnieją na obu listach.
Druga przyczyna to ukryte różnice w danych: dodatkowe spacje, inna wielkość liter, liczby zapisane jako tekst, daty zapisane w różnym formacie. Trzecia to brak decyzji, jak traktować puste komórki. Czy pusta komórka ma być ignorowana? Czy oznacza błąd? Bez tej decyzji formuły potrafią zwracać mylące rezultaty.
Dlatego przy porównywaniu list w Google Sheets najpierw ustala się sens porównania, a dopiero potem wybiera narzędzie. Jeśli zrobisz odwrotnie, bardzo łatwo użyć funkcji, która działa poprawnie technicznie, ale odpowiada na złe pytanie.
Najczęstszy błąd: zła metoda do dobrego problemu
Formatowanie warunkowe świetnie nadaje się do szybkiego podświetlenia braków lub duplikatów. Ale jeśli potem chcesz odfiltrować tylko błędne rekordy, przypisać im status albo regularnie powtarzać proces, samo kolorowanie komórek zaczyna przeszkadzać. Z drugiej strony rozbudowana formuła z kilkoma warunkami jest niepotrzebna, jeśli chcesz po prostu jednym spojrzeniem zobaczyć, co się nie zgadza.
Co już próbowałeś? Jeśli kopiujesz dane, ręcznie sortujesz kolumny i nadal nie widzisz przyczyny różnic, prawdopodobnie problem nie leży w braku funkcji, tylko w braku rozdzielenia zadań. Jedna metoda do duplikatów, inna do braków, jeszcze inna do porównania całych rekordów.
Najpierw ustal, co dokładnie chcesz porównać
Jaki masz cel?
To pytanie brzmi prosto, ale pozwala uniknąć połowy nieporozumień. W praktyce najczęściej pojawiają się cztery cele:
- Wykrycie duplikatów w jednej kolumnie – na przykład powtórzone e-maile, numery zamówień albo kody produktów.
- Znalezienie braków między dwiema listami – elementy obecne w liście A, których nie ma w liście B.
- Sprawdzenie zgodności pozycja po pozycji – czy A2 = B2, A3 = B3 i tak dalej.
- Porównanie rekordów po kluczu – nie tylko jednej wartości, ale zestawu danych, np. kod produktu + wariant albo imię + e-mail.
Każdy z tych celów wymaga trochę innego podejścia. Jeśli chcesz tylko znaleźć brakujące pozycje, nie potrzebujesz porównania 1:1. Jeśli natomiast analizujesz dwie wersje tej samej listy i każdy wiersz powinien odpowiadać dokładnie temu samemu rekordowi, wtedy porównanie po pozycjach ma sens.
Różnica między „A2 ma być równe B2” a „A2 ma wystąpić gdziekolwiek w B”
Załóżmy, że w kolumnie A masz:
- Anna
- Bartek
- Celina
A w kolumnie B:
- Bartek
- Anna
- Celina
Jeśli porównasz A2 z B2, dostaniesz błąd, bo Anna nie równa się Bartek. Ale jeśli twoje pytanie brzmi: „czy wszystkie te osoby są na obu listach?”, to odpowiedź brzmi: tak, są. Po prostu kolejność się zmieniła.
To właśnie jedna z najważniejszych decyzji przy porównywaniu list w Google Sheets. Czy interesuje cię pozycja rekordu, czy sama jego obecność? Gdy użytkownik tego nie rozróżnia, zwykle wybiera złą formułę i dochodzi do wniosku, że „arkusz źle liczy”. Arkusz najczęściej liczy poprawnie. To pytanie było źle postawione.
Kiedy problem jest prosty, a kiedy tylko wygląda na prosty
Prosty przypadek to jedna kolumna, niewiele danych i jednorazowe sprawdzenie. Na przykład masz 40 kodów i chcesz zobaczyć, które powtarzają się na liście. Tu zwykle wystarczy formatowanie warunkowe albo pojedyncza formuła z COUNTIF.
Trudniej robi się wtedy, gdy arkusz żyje. Każdego dnia ktoś dopisuje nowe wiersze, usuwa część wpisów, czasem kopiuje dane z maila albo formularza. W takiej sytuacji jednorazowe podświetlenie problemów nie wystarczy. Lepiej dodać kolumnę pomocniczą ze statusem, którą potem można filtrować i stale kontrolować.
Jest też trzeci wariant: pozornie masz prosty identyfikator, ale w rzeczywistości nie wystarcza. Przykład? Kod produktu występuje w kilku wariantach kolorystycznych. Sam kod nie odróżni wersji czarnej od białej. Wtedy porównanie po jednej kolumnie wskaże fałszywą zgodność. Potrzebny będzie klucz złożony z kilku pól.
Dlaczego arkusz pokazuje różnice, chociaż dane „wyglądają tak samo”

Najczęstsze przyczyny fałszywych niezgodności
Najbardziej zdradliwe są spacje. Czasem na początku, czasem na końcu, czasem między wyrazami jest ich więcej niż jedna. Człowiek tego zwykle nie zauważa, ale Google Sheets traktuje taki wpis jako inną wartość. anna@firma.pl i anna@firma.pl to nie zawsze to samo przy prostym porównaniu.
Drugi problem to wielkość liter i sposób zapisu. Jedna lista może zawierać Warszawa, a druga warszawa. Dla niektórych zastosowań to bez znaczenia, dla innych już tak. Przy adresach e-mail najczęściej chcesz ignorować wielkość liter. Przy kodach bywa różnie, zwłaszcza gdy kod musi zachować konkretny zapis.
Kolejna rzecz to puste komórki. Jeśli lista A ma 200 wierszy, ale ostatnie 20 to puste miejsca pod przyszłe dane, formuła może zacząć je traktować jak realne rekordy. Efekt? Dziesiątki niepotrzebnych wyników „brak” albo „duplikat”, które tylko zaśmiecają analizę.
Dochodzi jeszcze typ danych. Jedna kolumna może zawierać liczby jako liczby, druga te same wartości jako tekst. To częste przy kodach pocztowych, numerach identyfikacyjnych, datach albo numerach zamówień importowanych z różnych źródeł. Dla użytkownika to „to samo”, ale arkusz może widzieć różnicę między 00125 jako tekstem a 125 jako liczbą.
Krótka checklista przed porównaniem
Zanim zaczniesz cokolwiek podświetlać lub liczyć, zadaj sobie kilka prostych pytań:
- Czy obie listy dotyczą dokładnie tego samego zakresu danych?
- Czy porównujesz ten sam typ wartości: tekst z tekstem, liczbę z liczbą, datę z datą?
- Czy puste pola mają zostać pominięte, czy mają sygnalizować problem?
- Czy kolejność wierszy ma znaczenie, czy liczy się tylko obecność elementu?
- Czy jedna kolumna wystarczy, czy potrzebny jest klucz z kilku kolumn?
To krótki etap, ale bardzo praktyczny. Jeśli odpowiedzi są niejasne, wynik porównania też będzie niejasny. Właśnie tu początkujący najczęściej tracą czas: poprawiają formułę, zamiast doprecyzować zadanie.
Proste przygotowanie danych przed właściwym porównaniem
Najbezpieczniej pracować na kolumnach pomocniczych. Oryginału lepiej nie ruszać, szczególnie jeśli dane pochodzą z eksportu, formularza albo są potrzebne do późniejszego sprawdzenia. Obok możesz utworzyć „wersję do porównania”, oczyszczoną z typowych problemów.
Do usuwania zbędnych spacji przydaje się funkcja TRIM. Jeśli w komórce A2 masz tekst z niepotrzebnymi odstępami, możesz użyć:
=TRIM(A2)
To usuwa spacje na początku i końcu oraz redukuje wielokrotne spacje wewnątrz tekstu do pojedynczych. Przy nazwach, miastach czy e-mailach to często rozwiązuje połowę problemów.
Jeśli wielkość liter nie ma znaczenia, można ujednolicić zapis przez LOWER albo UPPER:
=LOWER(TRIM(A2))
Taka kombinacja jest bardzo praktyczna przy porównywaniu list kontaktów, e-maili, nazw klientów czy prostych identyfikatorów tekstowych. Dane nadal są czytelne, a porównanie staje się spójniejsze.
Gdy puste komórki nie powinny brać udziału w analizie, dobrze od razu to uwzględnić. Możesz w kolumnie pomocniczej zostawić pusty wynik dla pustej komórki źródłowej:
=IF(A2=””;””;LOWER(TRIM(A2)))
Dzięki temu nie będziesz później walczyć z masą fałszywych sygnałów. To szczególnie ważne przy długich listach z wolnymi wierszami.
Najszybsza metoda: formatowanie warunkowe do podświetlenia problemów
Kiedy to najlepszy wybór
Jeśli potrzebujesz szybkiego, wizualnego sprawdzenia, formatowanie warunkowe w Google Sheets jest bardzo wygodne. Nie budujesz dodatkowego raportu, nie tworzysz rozbudowanej logiki, tylko od razu widzisz, które komórki wyglądają podejrzanie. Dla początkującej osoby to często najlepszy punkt startowy.
Sprawdza się szczególnie dobrze, gdy lista jest krótka lub średnia i chodzi o jednorazowe porównanie. Na przykład masz import 80 kodów produktów i chcesz błyskawicznie zobaczyć, co się powtarza albo czego nie ma na drugiej liście. Wtedy kolorowe podświetlenie daje odpowiedź szybciej niż pełna tabela statusów.
Kiedy lepiej uważać? Gdy wynik ma być używany dalej. Sam kolor nie jest zbyt wygodny do filtrowania, raportowania i przekazywania innym osobom. Jeśli ktoś w zespole ma potem pracować na rekordach z błędem, znacznie praktyczniejsza będzie zwykła kolumna z etykietą typu brak, duplikat, OK.
Jak podświetlić duplikaty w jednej kolumnie
Załóżmy, że chcesz wykryć duplikaty w kolumnie A. Najczęściej używa się tu reguły niestandardowej z COUNTIF. Dla zakresu A2:A możesz zastosować formułę:
=AND(A2<>””;COUNTIF($A$2:$A;A2)>1)
Taka reguła podświetli wartości, które pojawiają się więcej niż raz, ale pominie puste komórki. To ważne, bo bez warunku A2<>”” arkusz mógłby uznać wiele pustych wierszy za duplikaty, co nie ma żadnej wartości praktycznej.
Jeśli podejrzewasz duplikaty pozorne, najpierw przygotuj kolumnę oczyszczoną, na przykład z użyciem LOWER(TRIM()), i dopiero na niej stosuj regułę. W przeciwnym razie Jan Kowalski i jan kowalski mogą nie zostać uznane za powtórkę, choć biznesowo to ten sam wpis.
To dobry moment na pytanie: czy chcesz tylko zobaczyć, że coś się powtarza, czy od razu decydować, który rekord zostawić? Jeśli to drugie, samo podświetlenie jest za słabe. Kolor pokaże problem, ale nie pomoże go uporządkować.
Jak podświetlić wartości, których brakuje na drugiej liście
Załóżmy, że lista A znajduje się w kolumnie A, a lista B w kolumnie B. Chcesz zaznaczyć te wartości z listy A, których nie ma nigdzie w liście B. Do formatowania warunkowego możesz użyć takiej reguły:
=AND(A2<>””;COUNTIF($B$2:$B;A2)=0)
Taka reguła podświetli komórki z kolumny A, których odpowiednika nie ma w kolumnie B. Jeśli chcesz sprawdzić sytuację w drugą stronę, robisz dokładnie to samo dla zakresu B i odwołujesz się do kolumny A. Jaki masz cel: znaleźć braki tylko po jednej stronie czy pełne rozjazdy między obiema listami? To drobna różnica, ale wpływa na to, ile reguł naprawdę potrzebujesz.
Tu też szybko wychodzi, czy dane są przygotowane sensownie. Jeśli nagle połowa listy świeci się na czerwono, problemem często nie jest brak dopasowań, tylko spacje, inny zapis albo liczby przechowywane jako tekst. W praktyce dobrze najpierw sprawdzić kilka podświetlonych pozycji ręcznie. Dwie minuty kontroli potrafią oszczędzić dużo nerwów.
Jeżeli porównujesz dane, które powinny być traktowane „po ludzku”, a nie znak po znaku, lepiej oprzeć regułę na kolumnach pomocniczych. Przykład: w jednej liście masz Kraków, w drugiej kraków. Surowe porównanie pokaże brak, choć biznesowo wpis jest ten sam. Po oczyszczeniu przez LOWER(TRIM()) wynik będzie znacznie bardziej wiarygodny.
Gdy potrzebujesz konkretnego wyniku: formuły i kolumna „status”
Prosty status: OK, brak, duplikat
Kolor pomaga zauważyć problem, ale nie zawsze pomaga go obsłużyć. Co już próbowałeś: ręczne przeglądanie, filtrowanie po kolorze, kopiowanie zaznaczonych rekordów? Jeśli lista ma żyć dłużej niż jeden dzień, wygodniej dodać kolumnę statusu i pozwolić arkuszowi opisywać każdy wiersz.
Dla listy w kolumnie A, porównywanej z kolumną B, możesz zacząć od prostego wariantu:
=IF(A2=””;””;IF(COUNTIF($A$2:$A;A2)>1;”duplikat”;IF(COUNTIF($B$2:$B;A2)=0;”brak na liście B”;”OK”)))
Taka formuła najpierw pomija puste wiersze, potem sprawdza, czy wartość powtarza się w samej liście A, a na końcu ocenia, czy występuje w liście B. To praktyczne, gdy chcesz od razu odfiltrować tylko problematyczne rekordy. Zamiast patrzeć na kolory, filtrujesz status i masz gotową listę do poprawy.
Gdy porównanie ma być bardziej odporne na bałagan w danych
Jeśli dane bywają „brudne”, nie porównuj surowych kolumn. Lepiej oprzeć status na wersjach oczyszczonych. Załóżmy, że w kolumnie C masz przygotowane wartości z A przez =IF(A2=””;””;LOWER(TRIM(A2))), a w kolumnie D analogicznie dla B. Wtedy status liczysz na C i D, nie na oryginale.
Dzięki temu zmniejszasz ryzyko fałszywych alarmów. To szczególnie przydaje się przy listach kontaktów, adresach e-mail, nazwach miejscowości czy danych sklejanych z kilku źródeł. Gdy wynik ma być podstawą do wysyłki, rozliczenia albo zamówienia, lepiej najpierw uporządkować zapis niż później ręcznie tłumaczyć, skąd wzięły się „braki”.
Klucz złożony, gdy jedna kolumna to za mało
Czasem jeden identyfikator nie wystarcza i wtedy nawet dobra formuła daje zły sens biznesowy. Jeśli produkt rozpoznajesz po kodzie i wariancie, połącz te pola w jeden klucz pomocniczy, na przykład:
=A2&”|”&B2
albo w bezpieczniejszej wersji po oczyszczeniu tekstu:
=LOWER(TRIM(A2))&”|”&LOWER(TRIM(B2))
Dopiero taki klucz porównujesz między listami przez COUNTIF. To prosty zabieg, a robi dużą różnicę. Bez niego arkusz uzna dwie pozycje za zgodne tylko dlatego, że mają ten sam kod, mimo że różnią się wariantem, rozmiarem albo datą.
Porównanie „wiersz do wiersza” a sprawdzanie, czy coś występuje gdziekolwiek
Tu pojawia się jedna z najczęstszych pomyłek. Czy próbujesz porównać te same pozycje w tych samych wierszach, czy tylko ustalić, czy dana wartość występuje gdzieś na drugiej liście? To nie jest drobiazg. To dwa różne zadania.
Jeśli kolejność wierszy ma znaczenie, możesz porównać komórki bezpośrednio, na przykład A2 z B2:
=IF(A2=B2;”zgodne”;”różne”)
Taki wariant ma sens przy kontroli dwóch wersji tej samej listy, gdzie wiersze powinny odpowiadać sobie jeden do jednego. Na przykład ktoś poprawił plik i chcesz zobaczyć, w których miejscach zmieniła się wartość.
Jeśli jednak listy mają inną kolejność, taka formuła da masę fałszywych różnic. Wtedy nie porównujesz pozycji w tym samym wierszu, tylko sprawdzasz obecność na całej liście przez COUNTIF. Czyli nie pytasz „czy A2 równa się B2?”, ale „czy A2 występuje gdziekolwiek w kolumnie B?”.
To ważne zwłaszcza przy eksportach z różnych systemów. Jedna lista może być posortowana alfabetycznie, druga według daty dodania. Wizualnie wygląda to podobnie, ale porównanie wiersz do wiersza nie ma wtedy sensu.
Gdy dane wyglądają tak samo, a arkusz uparcie pokazuje różnice
Najczęstsze przyczyny fałszywych niezgodności
Masz podświetlone braki, ale po szybkim spojrzeniu wszystko wydaje się identyczne? Co już sprawdziłeś: spacje, wielkość liter, format liczby? Zwykle problem leży w jednej z kilku prostych rzeczy.
- Zbędne spacje na początku lub końcu tekstu.
- Inny typ danych — na jednej liście liczba, na drugiej tekst wyglądający jak liczba.
- Ukryte puste znaki po imporcie z innego systemu.
- Puste komórki uwzględnione w porównaniu, choć nie powinny.
- Różna logika zapisu, na przykład „ul. Polna 5” kontra „Polna 5”.
Jeśli porównujesz kody, identyfikatory albo numery zamówień, szczególnie uważaj na wiodące zera. Dla człowieka 00125 i 125 mogą wyglądać podobnie, ale biznesowo to czasem zupełnie inne wartości. W takiej sytuacji automatyczne „oczyszczanie” może bardziej zaszkodzić niż pomóc.
Jak szybko sprawdzić, gdzie leży problem
Zamiast od razu przebudowywać cały arkusz, zrób prosty test pomocniczy. Jeśli w A2 i B2 wpisy wyglądają tak samo, sprawdź kilka wariantów:
=A2=B2
=LEN(A2)
=LEN(B2)
Jeśli długość tekstu się różni, masz sygnał, że gdzieś siedzi dodatkowy znak albo spacja. To banalne, ale działa zaskakująco często. Szczególnie przy danych wklejanych z maila, PDF-a albo CRM-u.
Możesz też porównać wersje oczyszczone:
=LOWER(TRIM(A2))=LOWER(TRIM(B2))

Jeśli surowe wartości są różne, a oczyszczone już zgodne, przyczyna jest jasna: zapis, nie treść. To dobra wiadomość, bo taki problem da się naprawić szybko i bez ręcznego przeglądania całej listy.
Jak wybrać metodę bez przekombinowania
Kiedy wystarczy podświetlenie, a kiedy lepiej od razu budować status
Jaki masz cel: tylko zauważyć problem czy jeszcze przekazać wynik dalej? Od tego zależy, czy kończysz na formatowaniu warunkowym, czy od razu robisz kolumnę pomocniczą.
Formatowanie warunkowe wybierz, gdy:
- chodzi o szybkie, jednorazowe sprawdzenie,
- lista nie jest bardzo duża,
- wystarczy ci odpowiedź wizualna,
- samodzielnie poprawiasz dane i nie potrzebujesz raportu.
Kolumnę statusu wybierz, gdy:
- musisz filtrować rekordy po typie problemu,
- wynik ma trafić do innej osoby,
- lista będzie aktualizowana kilka razy,
- chcesz rozróżnić duplikat, brak i OK bez zgadywania po kolorach.
W praktyce wiele osób zaczyna od koloru, a potem i tak dochodzi do statusu. To normalne. Problem pojawia się dopiero wtedy, gdy ktoś próbuje zarządzać dłuższą listą wyłącznie na podstawie czerwonych i zielonych komórek.
Kiedy jedna kolumna wystarczy, a kiedy potrzebny jest klucz
Jeśli każda pozycja ma jeden pewny identyfikator — e-mail, kod produktu, numer zamówienia — porównanie jednej kolumny zwykle wystarcza. To najprostszy i najmniej awaryjny wariant.
Jeżeli jednak pojedyncza wartość nie identyfikuje rekordu w pełni, nie porównuj jej w oderwaniu od reszty. Co ma decydować o zgodności: sama nazwa, czy nazwa razem z datą, rozmiarem albo wariantem? W takich przypadkach klucz złożony jest bezpieczniejszy.
Typowy przykład: ta sama osoba może pojawić się kilka razy, ale dla różnych wydarzeń. Sam adres e-mail nie wystarczy, jeśli chcesz porównać listę zapisów na konkretny termin. Wtedy lepiej połączyć e-mail z datą lub nazwą wydarzenia i dopiero to sprawdzać.
Czego lepiej unikać, jeśli nie chcesz gubić czasu
Ręczne porównywanie posortowanych list
Na krótką metę kusi, bo wydaje się szybkie. Sortujesz obie kolumny i patrzysz, gdzie „coś się rozjechało”. Problem w tym, że jeden brakujący element przesuwa dalszą część listy i po chwili trudno ocenić, co jest realną różnicą, a co tylko efektem przesunięcia.
Przy kilku pozycjach jeszcze da się to ogarnąć. Przy kilkudziesięciu lub kilkuset robi się z tego zgadywanka. Arkusz liczy to lepiej i bez zmęczenia, więc ręczne porównanie zostaw raczej do szybkiego potwierdzenia pojedynczego przypadku.
Mieszanie czyszczenia danych z oryginałem
Jeśli poprawiasz wartości bezpośrednio w źródłowej kolumnie, łatwo stracić informację, jak dane wyglądały na wejściu. A potem pojawia się pytanie: błąd był w eksporcie, w formularzu czy już po naszej stronie?
Bezpieczniej trzymać surowe dane obok wersji roboczej. Jedna kolumna pokazuje oryginał, druga służy do porównania. Dzięki temu możesz sprawdzić wynik i wrócić do źródła bez cofania połowy arkusza.
Założenie, że brak koloru oznacza brak problemu
To pułapka szczególnie przy bardziej złożonych danych. Reguła może być poprawna technicznie, ale nie odpowiadać twojemu zadaniu. Na przykład podświetlasz brak produktu po samym kodzie, chociaż dla ciebie liczy się kod razem z wariantem. Arkusz pokaże zgodność, ale biznesowo wynik będzie błędny.
Dlatego przed uruchomieniem porównania dobrze sprawdzić dwie lub trzy próbki ręcznie. Nie po to, żeby wszystko robić samodzielnie, tylko żeby upewnić się, że formuła sprawdza dokładnie to, co trzeba.
Praktyczny układ pracy, który zwykle działa najlepiej
Jeśli chcesz to zrobić sprawnie i bez wielu poprawek, prosty schemat wygląda tak:
- Skopiuj dane do kolumn pomocniczych i oczyść je przez TRIM oraz ewentualnie LOWER.
- Ustal, czy porównujesz kolejność wierszy, czy tylko obecność na liście.
- Do szybkiego sprawdzenia użyj formatowania warunkowego.
- Jeśli wynik ma być filtrowany albo przekazany dalej, dodaj kolumnę status.
- Przy bardziej złożonych rekordach zbuduj klucz z kilku kolumn.
To nie jest najbardziej „efektowny” sposób, ale dla początkującej osoby bywa najpewniejszy. Najmniej magii, mniej fałszywych alarmów i łatwiej znaleźć moment, w którym coś poszło nie tak.
Gdy listy się nie zgadzają, problem rzadko tkwi w samej formule. Częściej chodzi o to, że arkusz dostał inne dane, niż wydawało się na pierwszy rzut oka. Jeśli najpierw doprecyzujesz cel porównania, a dopiero potem wybierzesz metodę, większość takich sytuacji da się rozwiązać bez walki z arkuszem przez pół dnia.
Najszybsza metoda na duplikaty i braki bez budowania rozbudowanego arkusza
Masz listę i chcesz po prostu zobaczyć problem na ekranie? Bez dodatkowych kolumn, bez przeklikiwania pół arkusza? Wtedy formatowanie warunkowe zwykle wygrywa.
To szczególnie wygodne, gdy sprawdzasz jedną kolumnę z kodami, e-mailami albo nazwami i zależy ci na tym, żeby od razu zobaczyć, co się powtarza albo czego nie ma na drugiej liście.
Podświetlanie duplikatów w jednej kolumnie
Jeśli celem jest znalezienie powtórek w jednej liście, ustaw regułę dla zakresu, na przykład A2:A, i użyj formuły niestandardowej:
=COUNTIF($A$2:$A;A2)>1
Taka reguła zaznaczy wszystkie wartości, które występują więcej niż raz. Działa dobrze przy prostych listach, ale zadaj sobie jedno pytanie: czy duplikat ma znaczyć „dokładnie ten sam zapis”, czy „ta sama treść po oczyszczeniu”?
Jeśli w jednej komórce jest Jan Kowalski, a w drugiej jan kowalski , zwykła reguła może potraktować je różnie. W takiej sytuacji lepiej najpierw oczyścić dane w kolumnie pomocniczej, a dopiero potem szukać duplikatów.
Podświetlanie pozycji, których nie ma na drugiej liście
Jeżeli porównujesz dwie listy i chcesz zaznaczyć elementy z kolumny A, których nie ma w kolumnie B, użyj reguły dla zakresu A2:A:
=COUNTIF($B$2:$B;A2)=0
To dobry wariant, gdy lista B jest twoim punktem odniesienia. Na przykład masz listę zamówień z jednego systemu i chcesz sprawdzić, czego brakuje na liście wysyłek.
Chcesz działać w obie strony? Dodaj drugą regułę dla kolumny B:
=COUNTIF($A$2:$A;B2)=0
Wtedy od razu widzisz, czego nie ma po każdej stronie. Przy szybkiej kontroli to często wystarcza bardziej niż jakikolwiek raport.
Gdy potrzebujesz konkretnego wyniku, a nie tylko koloru
Kolor pomaga zauważyć problem, ale co zrobisz, jeśli trzeba potem odfiltrować same braki albo wysłać komuś listę rekordów do poprawy? Wtedy lepiej dodać prostą kolumnę pomocniczą ze statusem.
Najprostsza formuła „jest / brak” dla dwóch list
Załóżmy, że sprawdzasz, czy wartości z kolumny A występują gdziekolwiek w kolumnie B. W kolumnie C możesz wpisać:
=IF(A2=””;””;IF(COUNTIF($B$2:$B;A2)>0;”jest na liście B”;”brak na liście B”))
Po skopiowaniu w dół dostajesz jasny wynik dla każdego wiersza. Potem wystarczy filtr i od razu widzisz tylko problematyczne rekordy.
To rozwiązanie jest proste, ale ważna jest jedna rzecz: formuła nie porównuje wierszy jeden do jednego. Ona sprawdza obecność na całej liście. Jeśli tego właśnie potrzebujesz, jest w sam raz. Jeśli nie — wróć do pytania, jaki masz cel.
Jak od razu rozróżnić „duplikat”, „brak” i „OK”
Czasem jedna kolumna statusu ma rozwiązać cały bałagan. Da się to zrobić bez skomplikowanych konstrukcji. Dla listy w kolumnie A możesz użyć formuły w stylu:
=IF(A2=””;””;IF(COUNTIF($A$2:$A;A2)>1;”duplikat”;IF(COUNTIF($B$2:$B;A2)=0;”brak na liście B”;”OK”)))
Najpierw sprawdzasz duplikat w tej samej liście, potem brak na drugiej, a jeśli nic nie budzi zastrzeżeń — pojawia się OK.
To praktyczne przy listach uczestników, produktów albo kontaktów, gdzie część danych się powtarza, a część nie przeszła między systemami.
Jeśli porównujesz całe rekordy, jedna kolumna może nie wystarczyć
Co właściwie oznacza „to samo”? Sama nazwa produktu? Sam e-mail? A może e-mail plus wydarzenie, albo kod plus wariant? Gdy pojedyncza kolumna nie daje pewności, trzeba zbudować prosty klucz.
Łączenie dwóch lub trzech kolumn w jeden klucz porównawczy
Najczęściej robi się to przez sklejenie wartości z kilku kolumn. Przykład:
=A2&”|”&B2
albo przy trzech polach:
=A2&”|”&B2&”|”&C2
Taki klucz możesz potem porównywać dokładnie tak samo, jak pojedynczą kolumnę przez COUNTIF. Po co ten separator |? Żeby uniknąć zlewania się danych. Bez niego wartości AB + 12 i A + B12 mogłyby wyglądać identycznie po połączeniu.
To prosty trik, a oszczędza sporo pomyłek.
Kiedy klucz pomaga, a kiedy może wprowadzić chaos
Pomaga wtedy, gdy rekord ma sens tylko jako zestaw pól. Przykład z praktyki: ten sam e-mail może występować wiele razy, ale dla różnych terminów szkolenia. Jeśli porównasz tylko e-mail, wyjdzie fałszywa zgodność. Jeśli połączysz e-mail z datą, wynik staje się użyteczny.
Chaos pojawia się wtedy, gdy do klucza wrzucasz pola niestabilne. Na przykład opis, który ktoś raz zapisał skrótem, a raz pełną nazwą. Im więcej zmiennych tekstowych, tym więcej pozornych różnic. Dlatego do klucza najlepiej brać pola możliwie stałe: identyfikator, datę, wariant, kod.
Co zrobić, gdy porównujesz więcej niż dwie listy
Dwie listy to typowy przypadek, ale czasem masz trzy eksporty i chcesz szybko ustalić, co występuje we wszystkich, a co tylko w części. Nie trzeba od razu budować skomplikowanego modelu.
Prosta logika dla trzech kolumn
Jeśli masz listy w kolumnach A, B i C i chcesz sprawdzić, czy wartość z A występuje także w B i C, możesz użyć:
=IF(A2=””;””;IF(AND(COUNTIF($B$2:$B;A2)>0;COUNTIF($C$2:$C;A2)>0);”jest we wszystkich”;”brak w części list”))
To dobra opcja, gdy kontrolujesz zgodność między kilkoma źródłami, ale nadal zależy ci na prostocie.
Jeśli chcesz wiedzieć dokładniej, gdzie brakuje danej pozycji, wygodniej dodać osobne kolumny statusu: w B?, w C?. Mniej elegancko, za to dużo czytelniej przy codziennej pracy.
Małe poprawki w danych, które robią wielką różnicę w wyniku
Arkusz pokazuje braki, ty widzisz zgodność. Co już sprawdziłeś? Jeśli jeszcze nie oczyściłeś danych pomocniczo, właśnie tu często znika połowa problemów.
Oczyszczanie tekstu przed porównaniem
Najprostszy wariant dla tekstu to połączenie funkcji:
=LOWER(TRIM(A2))
TRIM usuwa zbędne spacje, a LOWER ujednolica wielkość liter. Dla wielu zwykłych list to wystarczy.
Jeśli dane przyszły z zewnętrznego systemu i nadal „nie chcą się zgodzić”, pomocna bywa jeszcze funkcja:
=CLEAN(A2)
Możesz też połączyć wszystko:
=LOWER(TRIM(CLEAN(A2)))
To dobry test roboczy dla e-maili, nazw i prostych identyfikatorów tekstowych. Nie zawsze powinien trafiać do danych źródłowych, ale do porównania sprawdza się bardzo dobrze.
Uważaj na liczby zapisane jako tekst
To częsty kłopot przy kodach, numerach dokumentów i eksportach CSV. Jedna kolumna zawiera liczby, druga tekst, który wygląda identycznie. Dla oka wszystko się zgadza, dla arkusza już niekoniecznie.
Jeśli porównujesz wartości liczbowe, sprawdź, czy obie strony mają ten sam typ. Pomocniczo możesz użyć prostego przekształcenia:
=VALUE(A2)
Ale ostrożnie. Jeśli masz identyfikatory z zerami na początku, takie przekształcenie może zepsuć sens danych. Wtedy lepiej zachować tekstowy zapis po obu stronach i porównywać go świadomie.
Krótka ścieżka decyzji: którą metodę wybrać w twojej sytuacji
Nie chodzi o to, żeby znać najwięcej funkcji, tylko żeby wybrać najmniej kłopotliwy wariant.
- Chcesz tylko szybko zobaczyć, gdzie są problemy? Formatowanie warunkowe.
- Chcesz filtrować, raportować albo przekazać wynik dalej? Kolumna statusu.
- Listy mają inną kolejność? Nie porównuj wiersz do wiersza, tylko sprawdzaj występowanie na liście.
- Jedna kolumna nie opisuje rekordu wystarczająco dobrze? Zbuduj klucz z kilku pól.
- Wynik wygląda podejrzanie? Najpierw zrób oczyszczoną wersję danych, dopiero potem oceniaj zgodność.
Jeśli masz wątpliwość między dwiema metodami, zwykle lepiej zacząć od prostszej: pomocnicza kolumna z oczyszczonymi danymi, potem status, a dopiero na końcu kolory. Taki układ łatwiej sprawdzić i trudniej się w nim zgubić.
Czego lepiej nie robić, jeśli nie chcesz wyprodukować sobie fałszywych różnic
Masz wynik i coś się nie klei? Zanim poprawisz pół arkusza, sprawdź, czy problem nie wynika ze sposobu porównania.
Nie porównuj wierszy 1:1, gdy listy mają inną kolejność
To jeden z najczęstszych błędów. W kolumnie A i B są te same pozycje, ale w innej kolejności, a ktoś sprawdza =A2=B2 i dostaje serię fałszywych niezgodności.
Zadaj sobie proste pytanie: czy chcesz porównać pozycję w wierszu, czy obecność na liście? Jeśli kolejność nie ma znaczenia, porównanie komórka do komórki tylko zaciemni obraz.
W takiej sytuacji trzymaj się metod opartych o COUNTIF albo o klucz porównawczy. One sprawdzają, czy element występuje gdziekolwiek, a nie tylko w tym samym miejscu.
Nie mieszaj oczyszczonych danych z surowymi bez oznaczenia
Jeśli w jednej formule używasz LOWER(TRIM(A2)), a w drugiej już zwykłego A2, łatwo dojść do sprzecznych wyników. Raz rekord będzie pasował, raz nie.
Dużo bezpieczniej zrobić osobną kolumnę pomocniczą, na przykład wersja oczyszczona, i na niej oprzeć całe porównanie. Wtedy od razu widzisz, czy problemem jest sama treść, czy tylko zapis.
Nie wrzucaj pustych komórek do tego samego worka co prawdziwe braki
Pusta komórka to nie zawsze „brak na liście”. Czasem to po prostu pusty rekord, niedokończony import albo wiersz techniczny, który nie powinien brać udziału w porównaniu.
Dlatego formuły ze statusem dobrze zaczynać od warunku typu:
=IF(A2=””;””;…)
Dzięki temu nie dostajesz dziesiątek komunikatów o brakach tam, gdzie realnie nie ma czego porównywać.
Jak sprawdzić, czy listy są zgodne po oczyszczeniu, ale bez przebudowy całego arkusza
Nie zawsze chcesz ruszać dane źródłowe. Czasem wystarczy szybki test pomocniczy. Co już próbowałeś: poprawianie ręczne czy raczej chcesz najpierw potwierdzić, gdzie naprawdę leży problem?
Kolumna robocza do porównań „na czysto”
Jeśli lista A jest w kolumnie A, a lista B w kolumnie B, dodaj obok dwie kolumny robocze:
=LOWER(TRIM(CLEAN(A2)))
=LOWER(TRIM(CLEAN(B2)))
Potem porównuj już te wersje. To prosty układ, ale bardzo skuteczny przy e-mailach, nazwach klientów, kodach kopiowanych z różnych źródeł.
Typowy efekt? Nagle okazuje się, że „braki” to wcale nie braki, tylko dodatkowa spacja po imporcie albo inny zapis wielkich liter.
Kiedy nie czyścić danych zbyt agresywnie
Nie każde ujednolicanie jest bezpieczne. Jeśli porównujesz identyfikatory, w których wielkość liter ma znaczenie, automatyczne LOWER może ukryć realny problem. Podobnie z numerami zawierającymi zera na początku.
Jaki masz cel: znaleźć rekordy „praktycznie te same” czy tylko rekordy dokładnie identyczne? Od tego zależy, czy czyścić dane mocno, czy tylko minimalnie.
Prosty filtr po statusie często daje więcej niż rozbudowana formuła
Jest pokusa, żeby zbudować jedną „sprytną” formułę, która zrobi wszystko naraz. Tylko że przy codziennej pracy bardziej liczy się czytelność niż efektowność.
Układ, który dobrze sprawdza się początkującym
Jeśli masz bałagan na listach, wygodny jest taki porządek:
- pierwsza kolumna: dane źródłowe,
- druga: wersja oczyszczona,
- trzecia: status typu OK, duplikat, brak,
- na końcu filtr tylko po problemach.
To może wyglądać mniej elegancko niż jedna długa formuła, ale za to łatwo sprawdzić, co właściwie zadecydowało o wyniku.
Praktyczny przypadek: lista uczestników i lista płatności
Załóżmy, że w jednej kolumnie masz zapisanych uczestników wydarzenia, a w drugiej osoby z potwierdzoną wpłatą. Jeśli kolejność jest inna, a część nazwisk ma przypadkowe spacje, porównanie „na oko” szybko staje się męczące.
Wersja oczyszczona plus status brak na liście płatności od razu pokazuje, które rekordy trzeba sprawdzić ręcznie. Bez zgadywania, bez przewijania dwóch list w kółko.
Po czym poznać, że problem leży nie w formule, tylko w założeniu
Czasem formuła działa poprawnie, tylko odpowiada na złe pytanie. To częstsze, niż się wydaje.
„Te same wartości” nie zawsze znaczą „te same rekordy”
Jeśli porównujesz sam e-mail, możesz dostać zgodność, mimo że chodzi o inny zakup, inny termin albo inną wersję produktu. Z drugiej strony, jeśli zbudujesz zbyt szczegółowy klucz, pojawią się różnice tam, gdzie biznesowo wszystko się zgadza.
Dlatego przed porównaniem dobrze ustalić jedną rzecz: po czym rozpoznajesz ten sam rekord? Po nazwie? Po kodzie? Po kombinacji dwóch pól?
Bez tej decyzji nawet dobra formuła będzie dawać mylący wynik.
Kiedy prostsza metoda jest po prostu lepsza
Jeśli potrzebujesz jednorazowo sprawdzić kilkadziesiąt pozycji, nie komplikuj. Formatowanie warunkowe albo jedna kolumna ze statusem zwykle załatwiają temat.
Bardziej rozbudowany układ ma sens dopiero wtedy, gdy:
- porównujesz te same typy list regularnie,
- musisz odróżniać kilka rodzajów problemów,
- wynik ma trafić dalej do innej osoby,
- dane są brudne i wymagają wersji pomocniczej.
Jeśli nie masz takiej potrzeby, prostota wygrywa. Mniej miejsc, w których coś może pójść bokiem.
Mini-check przed kliknięciem „to się nie zgadza”
Zanim uznasz, że listy faktycznie się różnią, przejdź przez krótki test:
- czy porównujesz obecność na liście, a nie pozycję w wierszu?
- czy obie strony mają ten sam typ danych: tekst z tekstem albo liczba z liczbą?
- czy usunąłeś zbędne spacje i ukryte znaki?
- czy puste komórki są wyłączone z porównania?
- czy pojedyncza kolumna na pewno wystarcza do identyfikacji rekordu?
Jeśli na któreś pytanie odpowiedź brzmi „nie wiem”, najpierw popraw założenie, dopiero potem oceniaj wynik.
Najmniej problemów zwykle daje taki porządek: najpierw oczyszczona kopia danych, potem prosty status, a dopiero później kolory i filtry. Gdy arkusz pokazuje coś dziwnego, to właśnie ten układ najszybciej odsiewa pozorne różnice od prawdziwych braków.
Najczęściej zadawane pytania (FAQ)
Jak porównać dwie listy w Google Sheets i znaleźć braki?
Najpierw ustal jedno: chcesz porównywać pozycja do pozycji czy tylko sprawdzić, czy dana wartość występuje gdziekolwiek na drugiej liście? To kluczowa różnica. Jeśli kolejność rekordów jest inna, porównanie A2 do B2 da mylące wyniki.
Do szukania braków między listami najczęściej używa się formuł sprawdzających, czy wartość z jednej kolumny występuje w drugiej. Dobrze działa też kolumna pomocnicza ze statusem, np. „jest” / „brak”. To wygodniejsze niż samo kolorowanie komórek, bo potem możesz taki status filtrować i szybko wyłapać problematyczne rekordy.
Dlaczego Google Sheets pokazuje różnice, chociaż dane wyglądają tak samo?
Najczęściej winne są drobiazgi niewidoczne na pierwszy rzut oka: spacje na końcu, dodatkowe odstępy w środku, inna wielkość liter albo ten sam numer zapisany raz jako tekst, a raz jako liczba. Dla oka wpisy są podobne, ale arkusz traktuje je jako różne wartości.
Co już sprawdzałeś? Zanim porównasz listy, dobrze oczyścić dane. W praktyce najwięcej zamieszania robią:
- spacje przed lub po wartości,
- różny zapis wielkich i małych liter,
- puste komórki w zakresie porównania,
- liczby i daty zapisane w innym formacie.
Typowy przykład: kod produktu wygląda identycznie, ale w jednej liście ma spację na końcu. Efekt to fałszywy „brak”, mimo że produkt naprawdę jest na obu listach.
Jak znaleźć duplikaty w jednej kolumnie w Google Sheets?
Jeśli chodzi tylko o szybkie wykrycie powtórek, najprościej użyć formatowania warunkowego albo formuły zliczającej wystąpienia, na przykład opartej na COUNTIF. To dobre rozwiązanie, gdy chcesz jednym spojrzeniem zobaczyć, które e-maile, kody lub numery zamówień pojawiają się więcej niż raz.
Jaki masz cel? Jeżeli duplikaty mają być tylko podświetlone, formatowanie warunkowe wystarczy. Jeśli potem chcesz filtrować błędne rekordy albo regularnie kontrolować nowe wpisy, lepsza będzie osobna kolumna ze statusem typu „duplikat” / „unikalny”.
Czy porównywać listy wiersz do wiersza, czy sprawdzać występowanie wartości?
To zależy od zadania. Porównanie wiersz do wiersza ma sens wtedy, gdy oba zestawy danych powinny mieć identyczną kolejność i każdy rekord w danym wierszu odpowiada temu samemu rekordowi po drugiej stronie. Tak bywa przy dwóch wersjach tej samej tabeli.
Jeśli jednak jedna lista jest posortowana alfabetycznie, a druga według daty, porównanie A2 z B2 pokaże mnóstwo błędów, choć dane mogą być kompletne. Wtedy lepiej sprawdzać, czy dana wartość z listy A występuje gdziekolwiek w liście B. To częsty przypadek przy porównywaniu list uczestników i płatności.
Jak porównać całe wiersze albo rekordy po kilku kolumnach?
Gdy jedna kolumna nie wystarcza, trzeba zbudować klucz złożony z kilku pól. Sam kod produktu może nie rozróżniać wariantu, a samo imię nie wystarczy do identyfikacji osoby. W takich sytuacjach porównuje się zestaw danych, na przykład „kod + wariant” albo „imię + e-mail”.
Po czym poznać, że to potrzebne? Jeśli arkusz pokazuje zgodność, a ty widzisz, że rekordy jednak się różnią, prawdopodobnie porównujesz zbyt ogólny identyfikator. Im bardziej podobne dane z różnych źródeł, tym częściej jedna kolumna daje fałszywie poprawny wynik.
Co lepsze do porównywania list: formatowanie warunkowe czy formuła w kolumnie pomocniczej?
Formatowanie warunkowe sprawdza się, gdy chcesz szybko zobaczyć różnice. Jest dobre na jednorazowe sprawdzenie albo prostą listę, gdzie wystarczy podświetlić duplikaty czy braki. Problem pojawia się wtedy, gdy chcesz z tym wynikiem pracować dalej.
Kolumna pomocnicza daje więcej kontroli. Możesz wpisać status, odfiltrować tylko błędy, dodać własne warunki i łatwiej powtarzać cały proces przy nowych danych. Jeśli arkusz ma żyć dłużej niż jedno sprawdzenie, taka kolumna zwykle wygrywa wygodą.
Jak przygotować dane przed porównaniem list w Google Sheets?
Zanim uruchomisz porównanie, zrób krótki przegląd danych. To oszczędza czas, bo większość „błędów” wynika nie z samej formuły, tylko z bałaganu w źródle. Szczególnie przy danych kopiowanych z maili, formularzy albo eksportów sklepu.
Najlepiej sprawdzić kilka rzeczy:
- czy usunięto zbędne spacje,
- czy zapis liter ma być ujednolicony,
- czy puste komórki mają być ignorowane,
- czy numery, daty i kody mają ten sam typ danych,
- czy porównujesz właściwy zakres, bez pustych „zapasowych” wierszy.
Jeśli po takim czyszczeniu wyniki nadal się nie zgadzają, dopiero wtedy szukaj braków, duplikatów albo błędnego klucza porównania. To zwykle daje dużo czytelniejszy obraz sytuacji.
Najważniejsze wnioski
- Najpierw ustal, jaki masz cel: chcesz wykryć duplikaty, znaleźć braki między listami, porównać pozycje 1:1 czy sprawdzić całe rekordy po kluczu. Od tej decyzji zależy, czy wynik będzie pomocny, czy pełen fałszywych alarmów.
- Najczęstsza pomyłka to porównywanie wiersz do wiersza, gdy listy mają inną kolejność. Jeśli jedna kolumna jest posortowana alfabetycznie, a druga według daty, A2 ≠ B2 nie oznacza jeszcze błędu.
- Podobne dane często różnią się technicznie: spacje na końcu, inna wielkość liter, liczby zapisane jako tekst albo daty w różnych formatach. Co już sprawdziłeś? Bez oczyszczenia danych nawet poprawna formuła wskaże problemy tam, gdzie ich nie ma.
- „Czy A2 jest równe B2?” i „czy A2 występuje gdziekolwiek w kolumnie B?” to dwa różne pytania. Dla list uczestników i płatności zwykle liczy się obecność na drugiej liście, a nie identyczna pozycja w arkuszu.
- Formatowanie warunkowe sprawdza się do szybkiego podświetlenia braków lub duplikatów, ale gorzej działa, gdy chcesz filtrować rekordy, nadawać im status albo regularnie powtarzać cały proces. Wtedy lepiej oprzeć się na formułach i jasnych regułach.
- Jedna metoda nie załatwia wszystkiego. Duplikaty w jednej kolumnie, braki między listami i porównanie całych rekordów to osobne zadania, więc warto rozdzielić je na etapy zamiast próbować rozwiązać wszystko jednym trikiem.






