it-swarm.com.de

So ermitteln Sie den Schnittpunkt zweier Mengen

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

12
NoamNelke

Es ist nicht erforderlich, in GAS zu springen. Standard-Tabellenkalkulationsfunktionen erledigen dies problemlos.

Bitte fügen Sie folgendes in eine Zelle in Ihr Beispiel ein

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

Die Funktion match erzeugt ein kartesisches Produkt aus den beiden fehlerhaften Bereichen, sofern keine Übereinstimmung gefunden wird. Es gibt einen Index in den 2. Bereich zurück, wenn eine Übereinstimmung gefunden wird .

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

Das iferror hilft, ein ordentliches Ergebnis zu erhalten, wenn überhaupt keine Übereinstimmungen vorliegen.

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

16
Martin Bramwell

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.

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")
2
Zhenya Morozov