So ermitteln Sie den Schnittpunkt zweier Mengen


15

Ich habe zwei Listen (eindeutige Mengen) in einer Tabelle und möchte die Schnittmenge der beiden erhalten.

Gibt es eine einfache Möglichkeit, dies zu tun?

Hier ist ein Beispiel dafür, was ich erreichen möchte:

Liste 1 Liste 2 Erwartetes Ergebnis

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

Beispiel Google Sheet


Können Sie uns ein Dokument mitteilen und das erwartete Ergebnis ein wenig erläutern?
Jacob Jan Tuinstra

Antworten:


18

Es ist nicht erforderlich, in GAS zu springen. Standard-Tabellenkalkulationsfunktionen erledigen dies auf einfache Weise.

Bitte fügen Sie folgendes in eine Zelle Ihres Beispiels ein

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

Die Match- Funktion erzeugt ein kartesisches Produkt der beiden Bereiche, das voll von Fehlern ist, außer wenn eine Übereinstimmung gefunden wird. Es gibt einen Index in den zweiten Bereich , wenn eine Übereinstimmung wird gefunden.

Die Filterfunktion wirft den ganzen Mist weg und gibt nur die korrekt indizierten Werte zurück.

Der iferror hilft dabei, ein ordentliches Ergebnis zu erzielen , wenn überhaupt keine Übereinstimmungen vorliegen .

Die Bereiche können beliebig lang sein, wie in der $ A $ 2: $ A-Redewendung angegeben.


3

Dieses kleine Skript vergleicht zwei Bereiche als Formel:

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

In Ihrem Blatt können Sie in Zelle D2 die folgende Formel hinzufügen:

=COMPARE(A2:A7,B2:B7)

Fügen Sie das Skript über das Menü "Extras" im Skript-Editor hinzu.


Ich begrüße einfache alte Formeln. Ich konnte sofort an sie denken .....
Jacob Jan Tuinstra

1
könnte sollte / muss konnte nicht .......
Jacob Jan Tuinstra

1
Vielen Dank, @Jacob! Ich hatte nie einen wirklichen Grund, Formeln in gDocs zu verwenden - danke, dass Sie mich für diese Welt geöffnet haben!
NoamNelke

3

Falls Sie nach einer Subtraktion von zwei Bereichen suchen (Elemente von Bereich 1, die sich nicht in Bereich 2 befinden), wie:

List 1  List 2  Expected result

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

Hier ist eine Formel für Sie:

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

0

Dieses kleine Skript vergleicht zwei Bereiche als Formel:

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

Extra:

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

In Ihrem Blatt können Sie in Zelle D2 die folgende Formel hinzufügen:

=intersect(A2:A7,B2:B7)

Fügen Sie das Skript über das Menü "Extras" im Skript-Editor hinzu.

= intersect (A2: A7, B2: B7) gibt Ergebnisse zurück, die auf beiden Arrays array1, array2 vorhanden sind.

= extersect (A2: A7, B2: B7) gibt Werte von Array1 zurück, die im Bereich B2: B7 nicht vorhanden sind

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.