Bagaimana saya bisa menemukan duplikat di kolom, menggunakan rumus?

11

Adakah yang membuat formula untuk menemukan duplikat di kolom? Sebagai contoh:

a
b
c
d
b
d

=somefunction(A1:A6)

Keluaran:

b
d

Saya tahu ada =unique()fungsi, itu pada dasarnya =not_unique()fungsi. Bertanya-tanya apakah itu dapat dibangun tanpa menggunakan kode.

jason
sumber
Berikut adalah satu contoh di utas ini stackoverflow.com/questions/19843406/… lihat ini yang dapat memberi Anda beberapa ide.
Vembu
Tunggu, apa yang Anda cari adalah not_uniquefungsi kan? Anda tampaknya akan mencari bidang yang tidak unik (duplikat), bukan bidang yang yang unik.
David Mulder

Jawaban:

16

Solusi yang mungkin tanpa kolom tambahan adalah:

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

Silakan, lihat contoh yang disiapkan di sini: Temukan Duplikat

Ilya Lapitan
sumber
3

Satu-satunya cara saya menemukan (menggunakan rumus) adalah dengan memperkenalkan countkolom baru .

Jika nilai-nilai Anda tercantum dalam kolom A, dimulai pada baris 2, masukkan rumus =COUNTA(FILTER(A$2:A$7, A$2:A$7 = A2))di B2dan tarik ke bawah untuk menyalinnya. Ini memberi:

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

Sekarang kami memiliki jumlah kemunculan setiap nilai, kami dapat memfilter Akolom berdasarkan nilai dari B. Di sel C2, masukkan formula =UNIQUE(FILTER(A2:A7, B2:B7 > 1)). Ini memberi:

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

Penjelasan rumus

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

  • The filterklausul memeriksa para Akolom, dan menemukan sel-sel yang memiliki nilai yang sama seperti sel A2( A2diganti dengan sel yang sesuai ketika menyalin formula).
  • counta menghitung nilai (termasuk non-numerik).

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

  • Ini filtermemeriksa kolom Buntuk nilai yang ada > 1, dan mengembalikan nilai yang sesuai dari kolom A. The uniqueFungsi hanya memastikan kami hanya kembali setiap nilai sekali, jadi kami jangan mendapatkan bdua kali, misalnya.

Namun , cara yang lebih elegan adalah menggunakan fungsi skrip:

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;
}

Buka Alat → Editor Skrip , rekatkan kode di atas, dan simpan. Anda sekarang dapat memanggil fungsi dengan memasukkan formula di =dups(A2:A7)mana saja. Ini mengembalikan duplikat yang ditemukan di A2:A7.


Saya telah menyiapkan contoh lembar bentang untuk mendemonstrasikan kedua kemungkinan , merasa bebas untuk melihatnya dan menyalinnya.

Vidar S. Ramdal
sumber
var values ​​= {} harus var values ​​= [] kan?
Jacob Jan Tuinstra
1
Sebenarnya tidak. valuesdigunakan sebagai peta nilai kunci, bukan array, sehingga mudah untuk memeriksa apakah kami telah memproses nilai tertentu - apakah values[property]ada, atau tidak.
Vidar S. Ramdal
1
Saya pikir Anda mendorong ke dalam array .... Aku diuji kode Anda dan itu membuat menunjukkan entri ganda, seperti dalam d, d, d, d ... . Solusi formula yang Anda berikan tidak melakukan itu.
Jacob Jan Tuinstra
1
Maksud saya objek.
Jacob Jan Tuinstra
1
@ JacobJanTuinstra Ah, ya - saya mengerti sekarang. Memperbaiki kode.
Vidar S. Ramdal