İki setin kesişimi nasıl elde edilir


17

Bir elektronik tabloda iki liste (benzersiz kümeler) var ve ikisinin kesişimini almak istiyorum.

Bunu yapmanın kolay bir yolu var mı?

İşte elde etmek istediğim şeyin bir örneği:

Liste 1 Liste 2 Beklenen sonuç

 a 1 e
 b 2 f
 ce      
 d 4      
 ef      
 f 6      

Örnek Google E-Tablosu


Bir dokümanı bizimle paylaşabilir ve beklenen sonucu biraz açıklayabilir misiniz?
Jacob Jan Tuinstra

Yanıtlar:


21

GAZ'a atlamaya gerek yoktur, standart elektronik tablo işlevleri bunu kolayca halleder.

Lütfen aşağıdakileri örneğinizdeki bir hücreye yapıştırın

=iferror(filter($A$2:$A, match($A$2:$A, B2:$B , false)), "no match")

Eşleme fonksiyonu bir eşleşme bulunursa haricinde hataların tam aralıklarının bir kartezyen bir ürün üretir. Bir eşleşme zaman 2 aralığa bir dizin döndürür edilir bulundu.

Filtre fonksiyonu uzakta martavallara geri döndürür doğru endeksli değerler atar.

IFERROR hiç hiçbir eşleşme yoksa bir derli toplu bir sonuç almak için yardımcı olur.

Aralıklar, $ A $ 2: $ A deyimiyle belirtildiği gibi herhangi bir uzunlukta olabilir.


3

Bu küçük komut dosyası iki aralığı bir formül olarak karşılaştıracaktır:

function COMPARE(array1, array2) {
  var array = [];  
  for(i=0; i<array1.length; i++) {
    for(j=0; j<array2.length; j++) {
      if(array1[i][0] == array2[j][0]) {
        // the extra square brackets will make it a 2D array, 
        // aligning it vertically
        array.push([array1[i][0]]);
      }
    }
  }
  return array;
}

Sayfanıza D2 hücresine aşağıdaki formülü ekleyebilirsiniz:

=COMPARE(A2:A7,B2:B7)

Komut dosyasını araçlar menüsü, komut dosyası düzenleyicisi aracılığıyla ekleyin.


Ben sade eski formül hoş geldiniz. Onları hemen düşünebilirim .....
Jacob Jan Tuinstra

1
could should / olmalıdır yapamadım .......
Jacob Jan Tuinstra

1
Teşekkürler @Jacob! GDocs'ta formül kullanmak için hiçbir zaman gerçek bir nedenim yoktu - beni bu dünyaya açtığınız için teşekkürler!
NoamNelke

3

İki aralığın (aralık 1'deki aralık 2'deki olmayan öğeler) nasıl çıkarılacağını arıyorsanız, örneğin:

List 1  List 2  Expected result

 a       1        a
 b       2        b
 c       e        c
 d       4        d
 e       f      
 f       6    

İşte size bir formül:

=iferror(filter($A$2:$A, iserror(match($A$2:$A, B2:$B , false))), "no match")

0

Bu küçük komut dosyası iki aralığı bir formül olarak karşılaştıracaktır:

function intersect(array1, array2) {
  var array = [];  
  for(i=0; i<array1.length; i++) {
    for(j=0; j<array2.length; j++) {
      if(array1[i][0] == array2[j][0]) {
        // the extra square brackets will make it a 2D array, 
        // aligning it vertically
        array.push([array1[i][0]]);
      }
    }
  }
  return array;
}

Ekstra:

function extersect(array1, array2) {
  var array = [];  
  var tmp = true;
  for(i=0; i<array1.length; i++) {
    for(j=0; j<array2.length; j++) {
      if(array1[i][0] == array2[j][0]) {
        // the extra square brackets will make it a 2D array, 
        // aligning it vertically
        tmp = false;
      }      
    }
    if(tmp == true) 
    {
      array.push([array1[i][0]]);
    }
    tmp = true;
  }
  return array;
}

Sayfanıza D2 hücresine aşağıdaki formülü ekleyebilirsiniz:

=intersect(A2:A7,B2:B7)

Komut dosyasını araçlar menüsü, komut dosyası düzenleyicisi aracılığıyla ekleyin.

= kesişim (A2: A7, B2: B7) her iki dizi dizisi de, dizi2'de bulunan sonuçları döndürür.

= extersect (A2: A7, B2: B7), B2: B7 aralığında bulunmayan dizi1 değerlerini döndürür

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.