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?
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:
Versuche dies:
Custom formula is
=countif(A:A,A1)>1
(oder wechseln Sie A
in die von Ihnen gewählte Spalte)A1:A100
. B. ).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)>1
stattdessen :.
Verwenden Sie für mehrere Spalten countifs
.
;
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, countif
sollte die erste Zelle des von Ihnen ausgewählten Bereichs sein.
=countif(B:B,B2)>1
. Dies ermöglicht eine ziemlich fortgeschrittene Formatierung, wenn absolute oder relative Zellreferenzen verwendet werden.
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:
Format
>Conditional formatting...
Apply to range
Sie unter den Bereich aus, auf den die Regel angewendet werden soll.Format cells if
Wählen Sie Custom formula is
im Dropdown.Warum funktioniert es?
COUNTIF(range, criterion)
, vergleicht jede Zelle in range
der 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 B3
3 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 4
gibt 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 > 1
wird 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:
*
) 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. :)
$A$1:$C$50
- entsprechend den betreffenden Spalten. Ich mag diesen allgemeineren Ansatz mehr als den von Zolley.
Die Antwort von @zolley ist richtig. Fügen Sie einfach ein Gif und Schritte als Referenz hinzu.
Format > Conditional formatting..
Format cells if..
=countif(A:A,A1)>1
Feld hinzufügenCustom formula is
A
mit Ihrer eigenen Spalte.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.
Text Contains
Liste angezeigt wird , ist häufig , sodass ein Benutzer im Allgemeinen darauf klickt, um auf das Dropdown-Menü zuzugreifen.
=COUNTIF(C:C, C1) > 1
Erläuterung: Das C1
hier bezieht sich nicht auf die erste Zeile in C. Da diese Formel durch eine bedingte Formatregel ausgewertet wird, C1
bezieht 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 C1
sich in der gesamten Spalte befindet (die aktuell ausgewertete Zelle), C
und wenn mehr als 1 davon vorhanden ist (dh der Wert hat Duplikate), dann: Wenden Sie die Hervorhebung an ( weil die Formel insgesamt bewertet zuTRUE
).
=AND(COUNTIF(C:C, C1) > 1, COUNTIF(C$1:C1, C1) = 1)
Erläuterung: Dies wird nur hervorgehoben, wenn beide COUNTIF
s 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 TRUE
nur, wenn alles, was drin C1
ist, ein Duplikat hat. ( Denken Sie daran, dass sich dies C1
effektiv 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:C
sondern 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, TRUE
wenn 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, TRUE
wenn diese Zeile Duplikate enthält) bedeutet dies, dass nur das erste Vorkommen hervorgehoben wird.
=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 ( TRUE
wenn 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) >= 1
startet den Suchbereich in der aktuell ausgewerteten Zeile (die C1
in 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).
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.
=COUNTIFS(A:A; A1; B:B; B1)>1