Wie kann ich eine Zelle markieren, wenn der Wert in derselben Spalte für die Google-Tabelle doppelt vorhanden ist?


270

Ich suche nach einer Formel für eine Google-Tabellenkalkulations- Markierungszelle, wenn der Wert in derselben Spalte dupliziert wird

Kann mir bitte jemand bei dieser Frage behilflich sein?

Antworten:


473

Versuche dies:

  1. Wählen Sie die gesamte Spalte aus
  2. Klicken Sie auf Format
  3. Klicken Sie auf Bedingte Formatierung
  4. Klicken Sie auf Weitere Regel hinzufügen (oder bearbeiten Sie die vorhandene / Standardregel).
  5. Stellen Sie Formatzellen ein, wenn :Custom formula is
  6. Setzen Sie den Wert auf: =countif(A:A,A1)>1(oder wechseln Sie Ain die von Ihnen gewählte Spalte)
  7. Legen Sie den Formatierungsstil fest.
  8. Stellen Sie sicher, dass der Bereich für Ihre Spalte gilt (z A1:A100. B. ).
  9. Klicken Sie auf Fertig

Alles, was in den A1: A100-Zellen geschrieben ist, wird überprüft. Wenn ein Duplikat vorhanden ist (das mehrmals vorkommt), wird es farbig dargestellt.

Bei Gebietsschemas, die comma ( ,) als Dezimaltrennzeichen verwenden, ist das Argumenttrennzeichen höchstwahrscheinlich ein Semikolon ( ;). Versuchen Sie =countif(A:A;A1)>1stattdessen :.

Verwenden Sie für mehrere Spalten countifs.


50
Ab den neuen Google Sheets können Sie die mehrspaltige Version COUNTIFS verwenden. Verwenden Sie diese Option, wenn Duplikate eine Kombination aus mehreren Spalten sind=COUNTIFS(A:A; A1; B:B; B1)>1
Christiaan Westerbeek

6
Das Ende ;führt für mich zu einem Fehler "Ungültige Formel". Nur das Entfernen hat den Trick getan. Seien Sie auch vorsichtig: Die Zelle, die Sie als zweites Argument von angeben, countifsollte die erste Zelle des von Ihnen ausgewählten Bereichs sein.
Edelans

11
Es klappt. Aber wieso? Unter der Annahme, dass A1 ein Kriterium für die Gleichung ist, vergleicht diese Formel nicht alle Zellen im Bereich mit A1?
Mafonya

9
@mafonya, die benutzerdefinierte Formel ist eine generische Formel, die als auf die erste Zelle anwendbar gelesen werden muss. Alle Referenzen werden für jede Zelle im ausgewählten Bereich angepasst. Wenn Sie beispielsweise Zelle B2 überprüfen, wird die Formel intern =countif(B:B,B2)>1. Dies ermöglicht eine ziemlich fortgeschrittene Formatierung, wenn absolute oder relative Zellreferenzen verwendet werden.
Asoundmove

14
Wenn Sie es als Randnotiz auf die gesamte Spalte anwenden möchten , können Sie die Formel = countif (A: A, A: A)> 1 verwenden. Dies bedeutet, dass es nicht nur für Zelle A1 gilt, sondern auch für A4 und A8, wenn sie gleich sind (Duplikat). Jetzt werden sowohl A4 als auch A8 formatiert.
BBking

68

Während die Antwort von zolley für die Frage vollkommen richtig ist, finden Sie hier eine allgemeinere Lösung für jeden Bereich sowie eine Erklärung:

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

Bitte beachten Sie, dass ich in diesem Beispiel den Bereich verwenden werde A1:C50. Der erste Parameter ( $A$1:$C$50) sollte durch den Bereich ersetzt werden, in dem Sie Duplikate hervorheben möchten!


um Duplikate hervorzuheben:

  1. Wählen Sie den gesamten Bereich aus, für den die doppelte Markierung gewünscht wird.
  2. Im Menü: Format>Conditional formatting...
  3. Wählen Apply to rangeSie unter den Bereich aus, auf den die Regel angewendet werden soll.
  4. In Format cells ifWählen Sie Custom formula isim Dropdown.
  5. Geben Sie in das Textfeld die angegebene Formel ein und passen Sie den Bereich an Schritt (3) an.

Warum funktioniert es?

COUNTIF(range, criterion), vergleicht jede Zelle in rangeder criterion, die ähnlich wie Formeln verarbeitet wird. Wenn keine speziellen Operatoren angegeben sind, wird jede Zelle im Bereich mit der angegebenen Zelle verglichen und die Anzahl der Zellen zurückgegeben, die der Regel entsprechen (in diesem Fall der Vergleich). Wir verwenden einen festen Bereich (mit $Vorzeichen), damit wir immer den gesamten Bereich anzeigen können.

Der zweite Block gibt INDIRECT(ADDRESS(ROW(), COLUMN(), 4))den Inhalt der aktuellen Zelle zurück. Wenn dies in der Zelle platziert wurde, haben die Dokumente über die zirkuläre Abhängigkeit geweint. In diesem Fall wird die Formel jedoch so ausgewertet, als ob sie sich in der Zelle befindet, ohne sie zu ändern.

ROW()und COLUMN()wird die Zeile zurück Nummer und Spaltennummer der bestimmten Zelle sind. Wenn kein Parameter angegeben wird, wird die aktuelle Zelle zurückgegeben (dies ist 1-basiert, gibt beispielsweise B33 für ROW()und 2 für zurück COLUMN()).

Dann verwenden wir:, ADDRESS(row, column, [absolute_relative_mode])um die numerische Zeile und Spalte in eine Zellreferenz zu übersetzen (wie z B3. B. Denken Sie daran, während wir uns im Kontext der Zelle befinden, wissen wir nicht, welche Adresse oder welchen Inhalt sie haben, und wir benötigen den Inhalt, um ihn zu vergleichen). Der dritte Parameter kümmert sich um die Formatierung und 4gibt die Formatierungs- INDIRECT()Likes zurück.

INDIRECT()Wird eine Zelle nehmen Bezug und Rück ihren Inhalt. In diesem Fall der Inhalt der aktuellen Zelle. Dann zurück zum Start, COUNTIF()wird jede Zelle im Bereich gegen unsere testen und die Zählung zurückgeben.

Der letzte Schritt besteht darin, dass unsere Formel einen Booleschen Wert zurückgibt, indem sie zu einem logischen Ausdruck gemacht wird : COUNTIF(...) > 1. Das > 1wird verwendet, weil wir wissen, dass mindestens eine Zelle mit unserer identisch ist. Das ist unsere Zelle, die im Bereich liegt und daher mit sich selbst verglichen wird. Um ein Duplikat anzuzeigen, müssen wir zwei oder mehr Zellen finden, die mit unseren übereinstimmen.


Quellen:


4
Leider funktioniert das bei mir nicht. Es gibt überhaupt keine Hervorhebung, obwohl es viele Duplikate gibt. Ich weiß nicht warum, es klingt nach einer guten Lösung.
JVC

Dies funktioniert bei mir, hebt aber auch leere Zellen hervor. Gibt es eine Möglichkeit, Leerzeichen auszuschließen?
Gillespieza

1
@ Amanda - Ja, ein bisschen Kreativität und es ist möglich. Ich bin AFK für die Woche, aber erwische mich in anderthalb Wochen und ich werde gerne helfen. Die Idee ist, eine AND-Anweisung (using *) und eine weitere Prüfung zu erstellen , also in Anlehnung an ((COUNTIF(...))*(NOT(ISBLANK(INDIRECT(...current cell...))))). Das ist das Beste, was ich auf dem Handy machen kann. :)
Egoistisch

2
Genau dies ist die erforderliche Lösung. Dies funktioniert wie eine HASHMAP, um Duplikate zu identifizieren.
AKh

1
Funktioniert charmant, danke @Selfish! Hat mir Zeit gespart. Hinweis: Es muss nur noch etwas geändert werden $A$1:$C$50- entsprechend den betreffenden Spalten. Ich mag diesen allgemeineren Ansatz mehr als den von Zolley.
Boldnik

28

Die Antwort von @zolley ist richtig. Fügen Sie einfach ein Gif und Schritte als Referenz hinzu.

  1. Gehe zum Menü Format > Conditional formatting..
  2. Finden Format cells if..
  3. =countif(A:A,A1)>1Feld hinzufügenCustom formula is
    • Hinweis: Ändern Sie den Buchstaben Amit Ihrer eigenen Spalte.

Geben Sie hier die Bildbeschreibung ein


2
Wie kann ich sie nach Farbe markieren, nachdem ich die Duplikate hervorgehoben habe?
Faisal

@Faisal nur mit Skript oder Addon
player0

27

Wählen Sie im Dropdown-Menü "Text enthält" die Option "Benutzerdefinierte Formel lautet:" und schreiben Sie: "= countif (A: A, A1)> 1" (ohne Anführungszeichen)

Ich habe genau das getan , was zolley vorgeschlagen hat, aber es sollte eine kleine Korrektur vorgenommen werden: Verwenden Sie "Benutzerdefinierte Formel ist" anstelle von "Text enthält" . Und dann funktioniert das bedingte Rendern.

Screenshot aus dem Menü


1
Ich habe Sie nicht abgelehnt (ich habe diese Frage heute gerade gefunden), aber hier ist ein Kommentar zu Ihrer Antwort, wie Sie es gewünscht haben. Ich denke nicht, dass das Semikolon in der Formel notwendig ist. Außerdem wird in Google Sheets immer noch ein Dropdown-Menü im Bereich für bedingte Formatierungen angezeigt. Zumindest klicke ich auf die Auswahloption und es erscheint eine lange Reihe von Optionen, die ich im Allgemeinen als Dropdown-Menü bezeichnen würde. Die Option, die anfänglich in der Dropdown- Text ContainsListe angezeigt wird , ist häufig , sodass ein Benutzer im Allgemeinen darauf klickt, um auf das Dropdown-Menü zuzugreifen.
Paul de Barros

Danke Paul, für deinen Kommentar. Vielleicht habe ich falsch verstanden: Ich habe verstanden, dass "Text enthält" (oder "Zellen formatieren, wenn ...") ein untergeordnetes Dropdown-Menü "Benutzerdefinierte Formel ist:" enthält. Außerdem sollte "Text enthält" einen entsprechenden Teilzeichenfolgenwert haben, nicht "= countif (A: A, A1)> 1;". In der Tat ist es ein anderer Ansatz.
Shurik

11

Markieren Sie Duplikate (in Spalte C):

=COUNTIF(C:C, C1) > 1

Erläuterung: Das C1hier bezieht sich nicht auf die erste Zeile in C. Da diese Formel durch eine bedingte Formatregel ausgewertet wird, C1bezieht sich das , wenn die Formel überprüft wird, um festzustellen, ob sie zutrifft, effektiv auf die Zeile, für die gerade ausgewertet wird Überprüfen Sie, ob die Hervorhebung angewendet werden soll. ( Also ist es eher so INDIRECT(C &ROW()), als ob dir das etwas bedeutet! ). Im Wesentlichen wird bei der Auswertung einer Formel mit bedingtem Format alles, was sich auf Zeile 1 bezieht, anhand der Zeile ausgewertet, für die die Formel ausgeführt wird. ( Und ja, wenn Sie C2 verwenden, bitten Sie die Regel, den Status der Zeile unmittelbar unter der aktuell ausgewerteten Zeile zu überprüfen. )

Das heißt also, zählen Sie Vorkommen von allem, was C1sich in der gesamten Spalte befindet (die aktuell ausgewertete Zelle), Cund wenn mehr als 1 davon vorhanden ist (dh der Wert hat Duplikate), dann: Wenden Sie die Hervorhebung an ( weil die Formel insgesamt bewertet zuTRUE ).

Markieren Sie nur das erste Duplikat:

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

Erläuterung: Dies wird nur hervorgehoben, wenn beide COUNTIFs vorhanden sind TRUE(sie erscheinen in einem AND()).

Der erste zu bewertende Term (der COUNTIF(C:C, C1) > 1) ist genau der gleiche wie im ersten Beispiel; Es ist TRUEnur, wenn alles, was drin C1ist, ein Duplikat hat. ( Denken Sie daran, dass sich dies C1effektiv auf die aktuelle Zeile bezieht, die überprüft wird, um festzustellen, ob sie hervorgehoben werden soll. )

Der zweite Begriff ( COUNTIF(C$1:C1, C1) = 1) sieht ähnlich aus, weist jedoch drei entscheidende Unterschiede auf:

Es durchsucht nicht die gesamte Spalte C(wie die erste :), C:Csondern startet die Suche ab der ersten Zeile: C$1 ( $zwingt sie, die Zeile buchstäblich zu betrachten 1, nicht die Zeile, die ausgewertet wird).

Anschließend wird die Suche in der aktuell ausgewerteten Zeile gestoppt C1.

Endlich heißt es = 1.

Dies ist nur dann der Fall, TRUEwenn sich über der aktuell ausgewerteten Zeile keine Duplikate befinden (dh, es muss das erste der Duplikate sein).

In Kombination mit diesem ersten Term (der nur dann vorhanden ist, TRUEwenn diese Zeile Duplikate enthält) bedeutet dies, dass nur das erste Vorkommen hervorgehoben wird.

Markieren Sie das zweite und weitere Duplikate:

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

Erläuterung: Der erste Ausdruck ist derselbe wie immer ( TRUEwenn die aktuell ausgewertete Zeile überhaupt ein Duplikat ist).

Der zweite Term ist genau der gleiche wie der letzte, außer dass er negiert ist: Er hat einen NOT()um ihn herum. Es ignoriert also das erste Auftreten.

Schließlich nimmt der dritte Begriff die Duplikate 2, 3 usw. auf und COUNTIF(C1:C, C1) >= 1startet den Suchbereich in der aktuell ausgewerteten Zeile (die C1in der C1:C). Dann wird nur dann ausgewertet TRUE(Hervorhebung anwenden), wenn sich ein oder mehrere Duplikate darunter befinden (und dieses einschließen): >= 1(Es darf >=nicht nur so sein, dass >das letzte Duplikat ignoriert wird).


3

Ich habe alle Optionen ausprobiert und keine hat funktioniert.

Nur Google App-Skripte haben mir geholfen.

Quelle: https://ctrlq.org/code/19649-find-duplicate-rows-in-google-sheets

Oben in Ihrem Dokument

1.- Gehen Sie zu Tools> Skripteditor

2.- Legen Sie den Namen Ihres Skripts fest

3.- Fügen Sie diesen Code ein:

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.- Speichern und ausführen

In weniger als 3 Sekunden war meine doppelte Zeile farbig. Kopieren Sie einfach das Skript.

Wenn Sie nichts über Google Apps-Skripte wissen, können Ihnen diese Links helfen:

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

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

Ich hoffe das hilft.


Kann dieser Code geändert werden, um nur die doppelten Felder in der Spalte mit Rot anstelle der vollständigen Zeile hervorzuheben?
Amr
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.