2016-05-03 10 views
-1

Das Problem, das ich habe, war schwer zu benennen und auch schwer zu durchforsten.Vergleichen Sie zwei Spaltenwerte aus 2 Datensätzen und suchen Sie dann die zugehörigen Werte.

Hier sind einige Beispieldaten.

A B   C  D E   F 

B1 04/14/16 746  B1 04/25/16 2 
B1 04/15/16 180  B1 04/30/16 4 
B1 04/16/16 494  B1 05/01/16 5 
B1 04/17/16 726  B2 04/01/16 1 
B1 04/18/16 206  B2 04/03/16 1 
B1 04/19/16 22  B2 04/04/16 2 
B1 04/20/16 193  B2 04/05/16 2 
B1 04/21/16 739  B2 04/12/16 8 
B1 04/22/16 926  B2 04/13/16 1 
B1 04/23/16 748  B2 04/14/16 2 
B1 04/24/16 830  B2 04/15/16 1 
B1 04/25/16 272  B2 04/18/16 9 
B1 04/26/16 0  B2 04/19/16 1 
B1 04/27/16 0  B2 04/26/16 9 
B1 04/28/16 0  B2 04/27/16 3 
B1 04/29/16 0  B2 04/30/16 1 
B1 04/30/16 685  B2 05/02/16 5 
B1 05/01/16 770  B2 05/03/16 2 
B1 05/02/16 701  B3 04/03/16 3 
B1 05/03/16 181  B3 04/04/16 1 
B2 04/01/16 77  B3 04/06/16 2 
B2 04/02/16 182  B3 04/07/16 1 
B2 04/03/16 53  B3 04/09/16 1 
B2 04/04/16 32  B3 04/16/16 7 

Was ich versuche zu tun ist für übereinstimmende A-und D-Spalten, sowie übereinstimmende B und E-Spalten zu überprüfen. Wenn die Spalten übereinstimmen, würde ich gerne Spalte F nehmen und durch Spalte C dividieren.

Auch wenn es für die Spaltenwerte A und B keine Übereinstimmung gibt, dann gebe diese Werte mit einer Null zurück.

Also für ein Spiel:

B1 04/25/16 =2/272 

Für ein nicht-Spiel:

B1 04/14/16 0 

Danke.

Antwort

1

Zwei INDEX/MATCH-Funktion wird es tun:

=IFERROR(INDEX($F$1:$F$24,MATCH(1,INDEX(($E$1:$E$24=J2)*($D$1:$D$24=I2),),0))/INDEX($C$1:$C$24,MATCH(1,INDEX(($B$1:$B$24=J2)*($A$1:$A$24=I2),),0)),0) 

Dies ist eine Matrixformel, sollte Vollspaltenreferenzen wie die Berechnung vermieden werden sind exponentiell und wird die Rechenzeiten erhöhen.

Wenn ein dynamischer Bereich gesucht dann diese Formel:

=IFERROR(INDEX($F$1:INDEX(F:F,MATCH(1E+99,F:F)),MATCH(1,INDEX(($E$1:INDEX(E:E,MATCH(1E+99,F:F))=J2)*($D$1:INDEX(D:D,MATCH(1E+99,F:F))=I2),),0))/INDEX($C$1:INDEX(C:C,MATCH(1E+99,C:C)),MATCH(1,INDEX(($B$1:INDEX(B:B,MATCH(1E+99,C:C))=J2)*($A$1:INDEX(A:A,MATCH(1E+99,C:C))=I2),),0)),0) 

Dies wird die letzte Zelle mit Daten finden und dass die Ausmaße des Bereichs einzustellen verwenden. Wenn nun die Daten größer oder kleiner werden, werden nur die Daten betrachtet und nicht mehr oder weniger als das durchlaufen, was benötigt wird, um den gesamten Datensatz abzudecken.

enter image description here

Verwandte Themen