Wie kann ich mithilfe von Formeln Duplikate in einer Spalte finden?

11

Hat jemand eine Formel gefunden, um Duplikate in einer Spalte zu finden? Zum Beispiel:

a
b
c
d
b
d

=somefunction(A1:A6)

Ausgabe:

b
d

Ich weiß, dass es eine =unique()Funktion gibt, es ist im Grunde eine =not_unique()Funktion. Ich habe mich gefragt, ob es ohne Verwendung von Code erstellt werden kann.

Jason
quelle
Hier ist ein Beispiel in diesem Thread stackoverflow.com/questions/19843406/…. Schauen Sie sich dies an, um sich ein Bild zu machen.
Vembu
Warten Sie, was Sie suchen, ist eine not_uniqueFunktion richtig? Sie scheinen nach den Feldern zu suchen, die nicht eindeutig sind (die Duplikate), nicht nach den Feldern, die eindeutig sind.
David Mulder

Antworten:

16

Die mögliche Lösung ohne zusätzliche Spalte ist:

=FILTER(UNIQUE(A2:A7), ARRAYFORMULA( COUNTIF(A2:A7,UNIQUE(A2:A7))>1 ))

Das vorbereitete Beispiel finden Sie hier: Duplikate suchen

Ilya Lapitan
quelle
3

Der einzige Weg, den ich gefunden habe (unter Verwendung von Formeln), ist die Einführung einer neuen countSpalte.

Wenn Ihre Werte in der Spalte Abeginnend in der Zeile aufgeführt sind 2, geben Sie die Formel =COUNTA(FILTER(A$2:A$7, A$2:A$7 = A2))ein B2und ziehen Sie sie nach unten, um sie zu kopieren. Das gibt:

| A: VALUE  | B: COUNT |
|-----------|----------|
|     a     |     1    |
|     b     |     2    |
|     c     |     1    |
|     d     |     2    |
|     b     |     2    |
|     d     |     2    |

Nachdem wir die Anzahl der Vorkommen jedes Werts gezählt haben, können wir die ASpalte nach Werten aus filtern B. C2Fügen Sie in die Zelle die Formel ein =UNIQUE(FILTER(A2:A7, B2:B7 > 1)). Das gibt:

| A: VALUE  | B: COUNT | C: DUPS |
|-----------|----------|---------|
|     a     |     1    |    b    |
|     b     |     2    |    d    |
|     c     |     1    |         |
|     d     |     2    |         |
|     b     |     2    |         |
|     d     |     2    |         |

Erklärung der Formeln

=COUNTA(FILTER(A$2:A$7, A$2:A$7 = A2))

  • Die filterKlausel überprüft die ASpalte und findet Zellen, die denselben Wert wie cell haben A2( A2wird beim Kopieren der Formel durch die entsprechende Zelle ersetzt).
  • counta zählt Werte (einschließlich nicht numerischer Werte).

=UNIQUE(FILTER(A2:A7, B2:B7 > 1))

  • Dadurch wird filterdie Spalte Bauf Werte untersucht > 1und die entsprechenden Werte aus der Spalte zurückgegeben A. Die uniqueFunktion stellt einfach sicher, dass wir jeden Wert nur einmal zurückgeben, damit wir bzum Beispiel nicht zweimal erhalten.

Ein eleganterer Weg wäre jedoch die Verwendung einer Skriptfunktion:

function dups(rows) {
  var values = {};
  var duplicates = [];
  for (var i = 0; i < rows.length; i++) {
    var value = rows[i][0];
    if (values[value] !== undefined && duplicates.indexOf(value) == -1) {
      duplicates.push(value);
    } else {
      values[value] = true
    }
  }
  return duplicates;
}

Gehen Sie zu Extras → Skript-Editor , fügen Sie den obigen Code ein und speichern Sie. Sie können die Funktion jetzt aufrufen, indem Sie die Formel an einer =dups(A2:A7)beliebigen Stelle eingeben. Dies gibt die in gefundenen Duplikate zurück A2:A7.


Ich habe eine Beispieltabelle erstellt, um beide Möglichkeiten zu demonstrieren. Sie können sie sich gerne ansehen und kopieren.

Vidar S. Ramdal
quelle
var values ​​= {} muss var values ​​= [] sein, oder?
Jacob Jan Tuinstra
1
Nicht wirklich. valueswird als Schlüsselwertzuordnung verwendet, nicht als Array, sodass leicht überprüft werden kann, ob wir bereits einen bestimmten Wert verarbeitet haben - entweder der values[property]vorhandene oder nicht.
Vidar S. Ramdal
1
Ich dachte , Sie in ein Array schoben .... ich Ihren Code getestet und es hält doppelte Einträge zeigt, wie in d, d, d, d ... . Die von Ihnen bereitgestellte Formellösung macht das nicht.
Jacob Jan Tuinstra
1
Ich meinte Objekt.
Jacob Jan Tuinstra
1
@JacobJanTuinstra Ah, ja - das sehe ich jetzt. Der Code wurde korrigiert.
Vidar S. Ramdal