2016-03-30 18 views
4

Ich habe eine Tabelle, die ich machen werde, dass sieht wie folgt aus:Excel, effizientere Formel für mehrere IF ANDS

Index Diff Exc Sym  Sec Result Criteria Met 

3.42 -2.07 0.86 0.92 1.83 1.95  
-0.38 -2.93 0.87 0.23 -2.01 0.09  
-2.67 -1.84 0.87 -2.49 -3.48 1.32  
-0.65 -0.98 0.46 0.98 -2.01 0.00  
-0.73 -2.79 -1.07 -2.15 -1.44 -0.10 
0.15 2.33 -0.46 -0.66 3.17 0.38 0.38 
0.90 -3.68 -0.72 -1.01 -1.36 1.69  
0.68 -1.12 -0.36 0.73 -1.34 -0.29 
-1.19 -1.70 -0.56 -1.31 1.45 0.49  
-0.45 -0.69 -0.56 -1.22 0.00 -0.49 
2.94 8.38 2.21 6.25 4.96 1.74  
-1.04 7.36 2.59 3.00 2.17 2.97  
1.21 1.73 3.05 1.48 3.56 0.77  
-1.10 1.86 0.60 1.18 1.07 -0.49 
-0.89 -3.19 -1.78 -2.24 -4.26 -0.81 
-1.17 -3.44 0.11 -1.22 3.66 0.36  
0.52 0.92 -1.02 0.38 1.96 -1.40 -1.40 
-0.90 3.01 -0.86 0.62 0.97 -0.50 -0.50 
2.78 1.46 0.00 0.47 1.95 0.84  

     Max  Min    
Index 2.00 -2.00    
Diff 10.00 0.00     
Exc  0.00 -10.00    
Sym  10.00 -10.00    
Sec  20.00 0.00  

Unter den Überschriften Index, Diff, excl, Sym, Sec, Ergebnis alle Daten vorhanden sind, In der Spalte met erfüllt eine Formel, die überprüft, ob die früheren Überschriften innerhalb der Max- und Min-Grenzen der darunter liegenden kleineren Tabelle liegen, und wenn sie dies tun, wird das Ergebnis veröffentlicht, wenn sie nicht alle innerhalb der Max- und Min-Grenzen liegen es ist leer. Ich tat das, indem ich diese Formel verwendete:

=IF(AND(A3<$B$24,A3>$C$24,B3<$B$25,B3>$C$25,C3<$B$26,C3>$C$26,D3<$B$27,D3>$C$27,E3<$B$28,E3>$C$28),F3,"") 

kopierte die Kriterium traf Spalte. Es funktioniert perfekt für das, was ich erreichen möchte, aber wenn diese Tabelle wächst und ich weitere Spalten hinzufüge, scheint es, als wäre sie unglaublich ineffizient und anfällig für viele menschliche Fehler. Gibt es eine Möglichkeit, die gleichen Ergebnisse zu erzielen, aber mit einer effizienteren Formel?

Bild als Referenz auch:

enter image description here

Antwort

2

Wie wäre:

=IF(AND(A3=MEDIAN(A3,B$24,C$24),B3=MEDIAN(B3,B$25,$C$25),C3=MEDIAN(C3,B$26,$C$26‌​),D3=MEDIAN(D3,B$27,$C$27),E3=MEDIAN(E3,B$28,$C$28)),F3,"") 

ich auch die Kriterientabelle in einer separaten Registerkarte bewegen würde vermeiden, dass Sie die loacation anpassen müssen der Min-/Max-Werte in Ihrer Formel jedes Mal, wenn Sie der Datentabelle neue Zeilen hinzufügen.

+0

nachzulesen den Trick (http://chandoo.org/wp/2010/06/24/between-formula-excel/) hilft müssen Sie den Wert enthalten, um dies zu überprüfen arbeiten. Also wäre der erste Teil A3 = MEDIAN (A3, B24, C24), der zweite Teil wäre B3 = MEDIAN (B3, B $ 25, $ C $ 25), usw. – sous2817

+0

Korrekte Formel ist: = IF (AND (A3 = MEDIAN (A3, B $ 24, C $ 24), B3 = MEDIAN (B3, B $ 25, $ C $ 25), C3 = MEDIAN (C3, B $ 26, $ C $ 26), D3 = MEDIAN (D3, B $ 27 , $ C $ 27), E3 = MEDIAN (E3, B $ 28, $ C $ 28)), F3, "") nicht sicher auf die Etikette ist für die Bearbeitung der Post ... – sous2817

+0

Vielen Dank für den Fehler Jungs zu fangen. Ich habe meine Formel aktualisiert. –

1

Um Ihre Formeln zu vereinfachen, müssen Sie Ihr Layout in Excel oft etwas komplexer gestalten. Ohne einen VBA zu schreiben, wäre mein Ansatz ... 1) Ich würde Ihr Min/Max-Layout transponieren und sie mit den Datenspalten ausrichten lassen. 2) Fügen Sie ein weiteres Blatt ein, um Zwischenberechnungen zu speichern.

Hier Sheet1 ... enter image description here

und hier ist Sheet2 ...

enter image description here

In Blatt2 Zelle B5 enthält eine typische Formel ...

=IF(AND(Sheet1!B5<Sheet1!B$2,Sheet1!B5>Sheet1!B$3),1,0) 

In Blatt2, Zelle G5 (und unten) enthält ...

=PRODUCT(B5:F5) 

in Tabelle1 Zelle H5 (und unten) enthält ...

=IF(Sheet2!G5=0,"",Sheet2!G5*G5) 

Es könnte die Logik weglassen und man konnte die Blatteinstellungen machen nicht 0 Werte anzuzeigen.

Wenn Sie Spalten hinzufügen (zB einfügen Spalten zwischen Tabelle1 Spalte F und G): - hinzufügen Max und Min-Werte für neue Spalten auf Sheet1 - legen Sie die gleichen Spalten auf Sheet2 - ziehen Sie die Formel aus der Spalte F auf sheet2 zu den neuen Spalten auf Sheet2 - überprüfen Sie die Produktformel in der Spalte "Ergebnis" auf Sheet2 enthält die neuen Spalten in Sheet2.

Mit dieser Methode können Sie genau ermitteln, was dazu geführt hat, dass Sie Ihre Kriterien nicht erfüllen.

+0

In der dritten Formel ist es nicht notwendig, im letzten Kriterium der IF() zu multiplizieren. Ein einfaches '= IF (Sheet2! G5 = 0," ", G5)' würde genügen, da es entweder 0 oder 1 –

5

diese Array Formel Versuchen:

=IF(SUM((A3:E3<=TRANSPOSE($B$24:$B$28))*(A3:E3>= TRANSPOSE($C$24:$C$28)))=COLUMNS(A3:E3),F3,"") 

Matrixformel zu sein, es mit bestätigt werden muss Ctrl-Shift-Eingabe, wenn Edit-Modus verlassen. Wenn es richtig gemacht wird, setzt Excel automatisch {} um die Formel, um eine Array-Formel zu bezeichnen.

![enter image description here

Eine Einschränkung, die Spalten verglichen werden muß, in der gleichen Reihenfolge wie die Min-/Max-Reihen sein.


auch, wie von fast allen festgestellt worden, wenn die Min Max Reihen transponiert wurden aus Spalte es benötigen würde lindern eine CSE Matrixformel zu verwenden. Die folgende funktionieren würde:

=IF(SUMPRODUCT((A5:E5>=$A$3:$E$3)*(A5:E5<=$A$2:$E$2))=COLUMNS(A5:E5),F5,"") 

enter image description here

+0

ist. Große Antwort, ich hatte gehofft, dass es einen Weg geben würde, wo die Spalten nicht gleich sein müssten Reihenfolge mit einer Art Lookup oder Match-Funktion, aber ich konnte es nicht herausfinden. – crams

+0

@ user3524727 Ich spielte auch mit dem Versuch, INDEX/MATCH zu verwenden, konnte aber auch nicht funktionieren. –

2

so etwas wie dieses Versuchen:

=IF(PRODUCT(IF(ROW>TRANSPOSE(MIN),1,0),IF(ROW<TRANSPOSE(MAX),1,0))=1,RESULT,"") 

In diesem Beispiel A11: E11 ist eine Reihe von Daten mit in F11 und dem MAX und MIN Kriterien sind in $ B $ 27: $ B $ 31 bzw. $ C $ 27: $ C $ 31.

=IF(PRODUCT(IF(A11:E11>TRANSPOSE($C$27:$C$31),1,0),IF(A11:E11<TRANSPOSE($B$27:$B$31),1,0))=1,F11,"") 

Geben Sie den Ausdruck als Matrixformel (CTRL-SHIFT-ENTER). Stellen Sie sicher, dass Sie eine relative Referenz für jede Datenzeile und absolute Referenzen für die MAX- und MIN-Kriterien verwenden. Kopieren Sie dann, um andere Zeilen zu bewerten. Das Ändern dieser Formel zur Aufnahme zusätzlicher Datenspalten kann durch Erweitern der Bereiche erfolgen.

Wenn Sie den Bereich, der die MAX- und MIN-Kriterien enthält, auf die gleiche Ausrichtung wie die Daten transponieren dürfen, können die TRANSPOSE-Funktionen in dieser Lösung eliminiert werden und das Tabellenlayout wird sauberer.

Hoffnung, die

+0

Die '= 1' scheint redundant zu sein, da jede Nicht-Null als TRUE behandelt wird. – Jeeped

+0

Großartig, das ist genau das, wonach ich gesucht habe. Denken Sie, dass es eine Möglichkeit geben würde, das ursprüngliche Problem zu lösen, ohne die MAX- und MIN-Kriterien in der gleichen Reihenfolge wie die Datentabelle zu halten? Zum Beispiel werde ich irgendwann ein paar hundert Datenspalten haben, aber ich möchte nur die MAX und MIN Grenze auf ungefähr 25% setzen.Ich habe versucht, eine Indexübereinstimmung oder irgendeine Art des Nachschlagens zu verwenden, aber es bleibt – crams

+0

Eine Idee ist, die Spalten zu gruppieren, die max/min zusammen haben. Eine andere besteht darin, falsche Kriterien für die 75% einzurichten, z. B. min = -1000000, max = +1000000 oder was auch immer, um sicherzustellen, dass Sie keine Daten verlieren. Sie können auch Filter in der Registerkarte Daten von Excel untersuchen. Filter bieten Ihnen eine flexible Möglichkeit, Daten auszuwählen, die Ihren Kriterien entsprechen - und Sie könnten vermeiden, die Arbeitsblattformeln entwerfen und pflegen zu müssen. – xidgel