Jak wyróżnić komórkę, jeśli wartość jest zduplikowana w tej samej kolumnie dla arkusza kalkulacyjnego Google?

270

Szukam formuły dla komórki podświetlania arkusza kalkulacyjnego Google, jeśli wartość jest zduplikowana w tej samej kolumnie

czy ktoś może mi pomóc w tym zapytaniu?

użytkownik3331309
źródło

Odpowiedzi:

473

Spróbuj tego:

  1. Wybierz całą kolumnę
  2. Kliknij Format
  3. Kliknij opcję Formatowanie warunkowe
  4. Kliknij Dodaj kolejną regułę (lub edytuj istniejącą / domyślną)
  5. Ustaw Formatuj komórki, jeśli :Custom formula is
  6. Ustaw wartość na: =countif(A:A,A1)>1(lub zmień Ana wybraną kolumnę)
  7. Ustaw styl formatowania.
  8. Upewnij się, że zakres dotyczy Twojej kolumny (np A1:A100.).
  9. Kliknij Gotowe

Wszystko, co zostanie zapisane w komórkach A1: A100, zostanie sprawdzone, a jeśli istnieje duplikat (występuje więcej niż jeden raz), zostanie pokolorowane.

W przypadku ustawień regionalnych wykorzystujących przecinek ( ,) jako separator dziesiętny separatorem argumentów jest najprawdopodobniej średnik ( ;). To znaczy spróbuj: =countif(A:A;A1)>1zamiast tego.

W przypadku wielu kolumn użyj countifs.

zolley
źródło
50
Od nowych Arkuszy Google możesz korzystać z wielokolumnowej wersji COUNTIFS. Użyj tego, jeśli duplikaty są kombinacją większej liczby kolumn=COUNTIFS(A:A; A1; B:B; B1)>1
Christiaan Westerbeek
6
zakończenie ;powoduje dla mnie błąd „nieprawidłowej formuły”. Usunięcie tego wystarczyło. Zachowaj też ostrożność: komórka określona jako drugi argument countifpowinna być pierwszą komórką wybranego zakresu.
edelans
11
To działa. Ale dlaczego? Zakładając, że A1 jest kryterium równania, czy ta formuła nie porównuje wszystkich komórek w zakresie z A1?
mafonya
9
@mafonya, formuła niestandardowa jest formułą ogólną, którą należy odczytać jako mającą zastosowanie do pierwszej komórki. Wszystkie odniesienia zostaną dostosowane dla każdej komórki w wybranym zakresie. Na przykład podczas sprawdzania komórki B2 formuła stanie się wewnętrznie =countif(B:B,B2)>1. Pozwala to na wykonanie dość zaawansowanego formatowania przy użyciu bezwzględnych lub względnych odniesień do komórek.
asoundmove
14
Na marginesie, jeśli chcesz zastosować go do całej kolumny, możesz użyć formuły = countif (A: A, A: A)> 1 Oznacza to, że nie będzie ona dotyczyła tylko komórki A1, ale będzie A4 i A8, jeśli są takie same (duplikat). Teraz zarówno format A4, jak i A8 zostaną sformatowane.
BBking
68

Chociaż odpowiedź Zolleya jest w sam raz na pytanie, oto bardziej ogólne rozwiązanie dla dowolnego zakresu oraz wyjaśnienie:

    =COUNTIF($A$1:$C$50, INDIRECT(ADDRESS(ROW(), COLUMN(), 4))) > 1

Pamiętaj, że w tym przykładzie użyję zakresu A1:C50. Pierwszy parametr ( $A$1:$C$50) należy zastąpić zakresem, w którym chcesz wyróżnić duplikaty!


aby podświetlić duplikaty:

  1. Wybierz cały zakres, w którym pożądane jest podwójne oznaczenie.
  2. W menu: Format>Conditional formatting...
  3. W obszarze Apply to rangewybierz zakres, do którego reguła ma być stosowana.
  4. W Format cells ifwybierz Custom formula isz menu rozwijanego.
  5. W polu tekstowym wstaw podaną formułę, dopasowując zakres do kroku (3).

Dlaczego to działa?

COUNTIF(range, criterion), porówna każdą komórkę rangedo tej criterion, która jest przetwarzana podobnie do formuł. Jeśli nie zostaną podane żadne specjalne operatory, porówna każdą komórkę w zakresie z daną komórką i zwróci liczbę komórek pasujących do reguły (w tym przypadku porównanie). Używamy stałego zakresu (ze $znakami), dzięki czemu zawsze oglądamy pełny zakres.

Drugi blok INDIRECT(ADDRESS(ROW(), COLUMN(), 4))zwróci zawartość bieżącej komórki. Jeśli zostanie to umieszczone w komórce, dokumenty będą płakać z powodu zależności cyklicznej, ale w tym przypadku formuła jest oceniana tak, jakby była w komórce, bez jej zmiany.

ROW()i COLUMN()zwróci odpowiednio numer wiersza i numer kolumny podanej komórki. Jeśli nie zostanie podany żaden parametr, bieżąca komórka zostanie zwrócona (na przykład 1, B3zwróci 3 dla ROW(), a 2 dla COLUMN()).

Następnie używamy: ADDRESS(row, column, [absolute_relative_mode])do przetłumaczenia wiersza i kolumny numerycznej na odwołanie do komórki (np B3. Pamiętaj, że gdy jesteśmy w kontekście komórki, nie wiemy, czy jest to adres LUB zawartość, i potrzebujemy zawartości, aby porównać). Trzeci parametr zajmuje się formatowaniem i 4zwraca INDIRECT()polubienia formatowania .

INDIRECT(), pobierze odwołanie do komórki i zwróci jej zawartość. W takim przypadku zawartość bieżącej komórki. Następnie wróć do początku, COUNTIF()przetestuje każdą komórkę w zasięgu względem naszej i zwróci liczbę.

Ostatnim krokiem jest sprawienie, że nasza formuła zwraca wartość logiczną, przez co czyni go logiczną wyrażenia: COUNTIF(...) > 1. > 1Jest używany, ponieważ wiemy, istnieje co najmniej jedna komórka identyczny do naszego. To jest nasza komórka, która jest w zasięgu, a zatem zostanie porównana do siebie. Aby wskazać duplikat, musimy znaleźć 2 lub więcej komórek pasujących do naszej.


Źródła:

Samolubny
źródło
4
Niestety to nie działa dla mnie. W ogóle nic nie wyróżnia, mimo że istnieje wiele duplikatów. Nie jestem pewien, dlaczego to brzmi jak dobre rozwiązanie.
JVC
To działa dla mnie, ale także podkreśla puste komórki. Czy istnieje sposób na wykluczenie spacji?
gillespieza
1
@Amanda - Tak, trochę kreatywności i jest to możliwe. Jestem AFK na tydzień, ale złap mnie za tydzień. I pół, a chętnie pomogę. Chodzi o to, aby utworzyć instrukcję AND (za pomocą *) i kolejną kontrolę, tak jak w przypadku ((COUNTIF(...))*(NOT(ISBLANK(INDIRECT(...current cell...))))). To najlepsze, co mogę zrobić na telefonie komórkowym. :)
Samolubny
2
Właśnie to jest wymagane rozwiązanie. To po prostu działa jak HASHMAP w celu identyfikacji duplikatów.
AKh
1
Działa uroczo, dzięki @Selfish! Zaoszczędził mi czas. Uwaga: jedyną rzeczą do zmiany musi być $A$1:$C$50- zgodnie z kolumnami, o których mowa. Lubię to bardziej ogólne podejście niż zolley.
boldnik
28

Odpowiedź @zolley jest prawidłowa. Wystarczy dodać Gif i kroki dla odniesienia.

  1. Idź do menu Format > Conditional formatting..
  2. Odnaleźć Format cells if..
  3. Dodaj =countif(A:A,A1)>1w poluCustom formula is
    • Uwaga: zmień literę Az własną kolumną.

wprowadź opis zdjęcia tutaj

maheshwaghmare
źródło
2
Jak mogę je filtrować według koloru po podświetleniu duplikatów?
Faisal,
@Faisal tylko ze skryptem lub dodatkiem
player0
27

Z menu rozwijanego „Zawiera tekst” wybierz „Formuła niestandardowa to:” i napisz: „= countif (A: A, A1)> 1” (bez cudzysłowów)

Zrobiłem dokładnie tak, jak zaproponował Zolley , ale należy wprowadzić małą korektę: użyj „Formuła niestandardowa” zamiast „Zawiera tekst” . A wtedy renderowanie warunkowe będzie działać.

Zrzut ekranu z menu

Shurik
źródło
1
Nie głosowałem za tobą (właśnie znalazłem dziś to pytanie), ale oto komentarz do twojej odpowiedzi, tak jak prosiłeś. Nie sądzę, aby średnik był niezbędny w formule. Ponadto nadal widzę menu rozwijane w panelu formatowania warunkowego w arkuszach Google. Przynajmniej klikam opcję wyboru i pojawia się długi zestaw opcji, które ogólnie nazwałbym rozwijanym menu. Opcja, która początkowo pojawia się w menu rozwijanym, jest często Text Containstaka, że ​​użytkownik zazwyczaj klikałby, aby uzyskać dostęp do menu rozwijanego.
Paul de Barros,
Dzięki, Paul, za twój komentarz. Może źle zrozumiałem: Zrozumiałem, że „Tekst zawiera” (lub „Formatuj komórki, jeśli ...”) zawiera rozwijane menu potomne „Formuła niestandardowa to:”. Ponadto „Text Contains” powinien mieć odpowiednią wartość podłańcucha, a nie „= countif (A: A, A1)> 1;”. W rzeczywistości jest to inne podejście.
Shurik
11

Zaznacz duplikaty (w kolumnie C):

=COUNTIF(C:C, C1) > 1

Objaśnienie: C1Tutaj nie odnosi się do pierwszego wiersza w C. Ponieważ ta formuła jest oceniana przez regułę formatu warunkowego, zamiast tego, gdy formuła jest sprawdzana, czy ma zastosowanie, C1efektywnie odnosi się do tego, który wiersz jest obecnie oceniany sprawdź, czy wyróżnienie powinno zostać zastosowane. ( Czyli bardziej INDIRECT(C &ROW()), jeśli to coś dla ciebie znaczy! ). Zasadniczo, oceniając formułę formatu warunkowego, wszystko, co odnosi się do wiersza 1, jest oceniane względem wiersza, przeciwko któremu działa formuła. ( I tak, jeśli użyjesz C2, to poprosisz regułę o sprawdzenie statusu wiersza bezpośrednio poniżej tego, który jest obecnie oceniany ).

Oznacza to, że policz wystąpienia tego, co jest w C1(bieżąca komórka poddawana ocenie), które znajdują się w całej kolumnie, Ca jeśli jest ich więcej niż 1 (tj. Wartość ma duplikaty), to: zastosuj wyróżnienie ( ponieważ formuła , ogólnie ocenia naTRUE ).

Zaznacz tylko pierwszy duplikat:

=AND(COUNTIF(C:C, C1) > 1, COUNTIF(C$1:C1, C1) = 1)

Objaśnienie: Podświetla się tylko wtedy, gdy oba COUNTIFTRUE(pojawiają się w środku AND()).

Pierwszy oceniany termin ( COUNTIF(C:C, C1) > 1) jest dokładnie taki sam jak w pierwszym przykładzie; to TRUEtylko wtedy, gdy to, co jest w C1posiada duplikat. ( Pamiętaj, że C1skutecznie odnosi się do sprawdzania bieżącego wiersza, aby sprawdzić, czy powinien zostać podświetlony ).

Drugi termin (COUNTIF(C$1:C1, C1) = 1 ) wygląda podobnie, ale ma trzy zasadnicze różnice:

Nie przeszukuje całej kolumny C(jak robi to pierwszy:), C:Cale zamiast tego rozpoczyna wyszukiwanie od pierwszego wiersza: C$1 ( $zmusza go do dosłownego spojrzenia na wiersz 1, a nie na którykolwiek wiersz jest oceniany).

A potem zatrzymuje wyszukiwanie w bieżącym wierszu, który jest analizowany C1.

Wreszcie mówi = 1.

Tak będzie, tylko TRUEjeśli nie będzie duplikatów nad aktualnie ocenianym wierszem (co oznacza, że ​​musi to być pierwszy z duplikatów).

W połączeniu z tym pierwszym terminem (który będzie tylko TRUEwtedy, gdy ten wiersz ma duplikaty) oznacza to, że tylko pierwsze wystąpienie zostanie podświetlone.

Zaznacz drugi i kolejne duplikaty:

=AND(COUNTIF(C:C, C1) > 1, NOT(COUNTIF(C$1:C1, C1) = 1), COUNTIF(C1:C, C1) >= 1)

Objaśnienie: Pierwsze wyrażenie jest takie samo jak zawsze (TRUE jeśli aktualnie oceniany wiersz jest w ogóle duplikatem).

Drugi termin jest dokładnie taki sam jak poprzedni, z tą różnicą, że jest negowany: ma NOT()wokół siebie. Dlatego ignoruje to pierwsze wystąpienie.

Wreszcie trzeci termin zbiera duplikaty 2, 3 itd. COUNTIF(C1:C, C1) >= 1Rozpoczyna zakres wyszukiwania w aktualnie ocenianym wierszu ( C1w C1:C). Następnie ocenia tylko TRUE(zastosuj wyróżnienie), jeśli pod tym (a także tym) znajduje się jeden lub więcej duplikatów: >= 1(nie może być >=tak, >że ostatni duplikat jest ignorowany).

RedYeti
źródło
3

Wypróbowałem wszystkie opcje i żadna nie działała.

Pomogły mi tylko skrypty aplikacji Google.

źródło: https://ctrlq.org/code/19649-find-duplicate-rows-in-google-sheets

U góry dokumentu

1. - przejdź do narzędzia> edytor skryptów

2. - ustaw nazwę swojego skryptu

3. - wklej ten kod:

function findDuplicates() {
  // List the columns you want to check by number (A = 1)
  var CHECK_COLUMNS = [1];

  // Get the active sheet and info about it
  var sourceSheet = SpreadsheetApp.getActiveSheet();
  var numRows = sourceSheet.getLastRow();
  var numCols = sourceSheet.getLastColumn();

  // Create the temporary working sheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var newSheet = ss.insertSheet("FindDupes");

  // Copy the desired rows to the FindDupes sheet
  for (var i = 0; i < CHECK_COLUMNS.length; i++) {
    var sourceRange = sourceSheet.getRange(1,CHECK_COLUMNS[i],numRows);
    var nextCol = newSheet.getLastColumn() + 1;
    sourceRange.copyTo(newSheet.getRange(1,nextCol,numRows));
  }

  // Find duplicates in the FindDupes sheet and color them in the main sheet
  var dupes = false;
  var data = newSheet.getDataRange().getValues();
  for (i = 1; i < data.length - 1; i++) {
    for (j = i+1; j < data.length; j++) {
      if  (data[i].join() == data[j].join()) {
        dupes = true;
        sourceSheet.getRange(i+1,1,1,numCols).setBackground("red");
        sourceSheet.getRange(j+1,1,1,numCols).setBackground("red");
      }
    }
  }

  // Remove the FindDupes temporary sheet
  ss.deleteSheet(newSheet);

  // Alert the user with the results
  if (dupes) {
    Browser.msgBox("Possible duplicate(s) found and colored red.");
  } else {
    Browser.msgBox("No duplicates found.");
  }
};

4. - zapisz i uruchom

W mniej niż 3 sekundy mój zduplikowany wiersz został pokolorowany. Wystarczy skopiować skrypt.

Jeśli nie wiesz o skryptach aplikacji Google, te linki mogą pomóc:

https://zapier.com/learn/google-sheets/google-apps-script-tutorial/

https://developers.google.com/apps-script/overview

Mam nadzieję, że to pomoże.

JRichardsz
źródło
Czy ten kod można zmodyfikować, aby podświetlał tylko zduplikowane pola w kolumnie kolorem czerwonym zamiast pełnego wiersza?
Amr