Formülleri kullanarak bir sütundaki kopyaları nasıl bulabilirim?


11

Bir sütunda kopyaları bulmak için bir formül bulan var mı? Örneğin:

a
b
c
d
b
d

=somefunction(A1:A6)

Çıktı:

b
d

Bir =unique()fonksiyon olduğunu biliyorum , temelde bir =not_unique()fonksiyon. Kod kullanmadan inşa edilip edilemeyeceğini merak ediyordum.


İşte bu konudaki bir örnek stackoverflow.com/questions/19843406/… size bir fikir verebilecek bir göz atın.
Vembu

Bekle, aradığınız şey bir not_uniqueişlev değil mi? Sen benzersiz (çiftleri) olmayan alanlara, alanlar değil arıyor gibi görünüyor vardır benzersiz.
David Mulder

Yanıtlar:


16

Ek sütun içermeyen olası çözüm:

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

Lütfen, burada hazırlanan örneğe bakın: Kopyaları Bul


3

Bulduğum tek yol (formülleri kullanarak) yeni bir countsütun eklemektir.

Değerleriniz sütununda listelenen varsa A, satırdan itibaren 2, formülü girin =COUNTA(FILTER(A$2:A$7, A$2:A$7 = A2))içinde B2ve sürükle aşağı kopyalamak için. Bu şunları verir:

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

Artık her bir değerin bir kaç kez tekrarlandığına göre, Asütunu değerlerine göre filtreleyebiliriz B. Hücreye C2formülü ekleyin =UNIQUE(FILTER(A2:A7, B2:B7 > 1)). Bu şunları verir:

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

Formüllerin açıklaması

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

  • filterMaddesi inceler Asütunu ve hücre ile aynı değere sahip hücreleri bulur A2( A2formül kopyalama mukabil hücre ile değiştirilir).
  • counta değerleri (sayısal olmayan dahil) sayar.

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

  • Bu, filtersütun Bolan değerleri inceler ve sütundan > 1karşılık gelen değerleri döndürür A. uniqueFonksiyon sadece biz alamazsam çok emin biz sadece bir kez her değeri döndürmek yapar b, iki kez, örneğin.

Bununla birlikte , bir komut dosyası işlevini kullanmak daha zarif bir yol olacaktır:

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

Git Senaryo Editör → Araçlar , yukarıdaki kodu yapıştırın ve kaydedin. Artık formülü =dups(A2:A7)herhangi bir yere girerek işlevi çağırabilirsiniz . Bu, içinde bulunan kopyaları döndürür A2:A7.


Her iki olasılığı da göstermek için örnek bir elektronik tablo ayarladım , bakmaktan ve kopyalamaktan çekinmeyin.


var değerleri = {} var değerleri olmalı = [] değil mi?
Jacob Jan Tuinstra

1
Aslında hayır. valuesbir dizi değil, anahtar / değer çifti haritası olarak kullanılır, böylece belirli bir değeri zaten values[property]işleyip işlemediğimizi kontrol etmek kolaydır - ya var ya da değil.
Vidar S. Ramdal

1
Bir dizi içine itti düşündüm .... Kodunuzu test ve d, d, d, d ... gibi yinelenen girişleri gösteren devam ediyor . Sağladığınız formül çözümü bunu yapmıyor.
Jacob Jan Tuinstra

1
Nesne demek istedim.
Jacob Jan Tuinstra

1
@JacobJanTuinstra Ah, evet - Şimdi görüyorum. Kod düzeltildi.
Vidar S. Ramdal
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.