Cara mendapatkan persimpangan dua set

16

Saya memiliki dua daftar (set unik) dalam spreadsheet dan saya ingin mendapatkan persimpangan keduanya.

Apakah ada cara mudah untuk melakukan ini?

Berikut ini contoh yang ingin saya capai:

Daftar 1 Daftar 2 Hasil yang diharapkan

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

Contoh Google Sheet

NoamNelke
sumber
Bisakah Anda berbagi dokumen dengan kami dan menjelaskan hasil yang diharapkan sedikit?
Jacob Jan Tuinstra

Jawaban:

20

Tidak perlu beralih ke GAS, fungsi spreadsheet standar menangani ini dengan mudah.

Harap tempelkan yang berikut ke sel dalam contoh Anda

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

Fungsi kecocokan menghasilkan produk kartesius dari dua rentang penuh kesalahan kecuali di mana kecocokan ditemukan. Ia mengembalikan indeks ke-2 kisaran ketika pertandingan yang ditemukan.

Fungsi filter membuang semua sampah dan hanya mengembalikan nilai yang diindeks dengan benar.

The IFERROR membantu untuk mendapatkan hasil rapi jika tidak ada pertandingan sama sekali.

Rentangnya bisa berapa pun, seperti yang ditunjukkan oleh idiom $ A $ 2: $ A.

Martin Bramwell
sumber
3

Skrip kecil ini akan membandingkan dua rentang, sebagai rumus:

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

Di lembar Anda, Anda dapat menambahkan dalam sel D2 rumus berikut:

=COMPARE(A2:A7,B2:B7)

Tambahkan skrip melalui menu alat, skrip editor.

Jacob Jan Tuinstra
sumber
Saya menyambut formula lama yang sederhana. Saya bisa memikirkan mereka segera .....
Jacob Jan Tuinstra
1
bisa seharusnya / tidak bisa tidak .......
Jacob Jan Tuinstra
1
Terima kasih, @ Jacob! Saya tidak pernah memiliki alasan nyata untuk menggunakan formula di gDocs - terima kasih telah membuka saya ke dunia ini!
NoamNelke
3

Jika Anda mencari cara untuk mengurangi dua rentang (elemen dari rentang 1 yang tidak di kisaran 2), seperti:

List 1  List 2  Expected result

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

Berikut ini rumus untuk Anda:

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

Skrip kecil ini akan membandingkan dua rentang, sebagai rumus:

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

Tambahan:

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

Di lembar Anda, Anda dapat menambahkan dalam sel D2 rumus berikut:

=intersect(A2:A7,B2:B7)

Tambahkan skrip melalui menu alat, skrip editor.

= intersect (A2: A7, B2: B7) mengembalikan hasil yang ada pada kedua array1 array1, array2.

= extersect (A2: A7, B2: B7) mengembalikan nilai-nilai array1 yang tidak ada dalam rentang B2: B7

GlobeCore.com
sumber