
Ich möchte einen MEDIAN von Werten in einer Spalte basierend auf der Erfüllung von Bedingungen in ermittelnzweiandere Spalten. Ich verwende MS Excel.
Ich weiß, dass ich die MEDIAN-Funktion als ARRAY (Strg + Umschalt + Eingabe) mit einer IF-Funktion verarbeiten muss, und das funktioniert gut, wenn ich nur 1 Bedingung in meiner IF-Anweisung verwende. Sobald ich jedoch versuche,2Bedingungen mit der UND-Funktion erhalte ich einen Median von 0 (d. h., es funktioniert nicht).
Wie berechne ich einen Median von Werten in einer Spalte basierend auf den Übereinstimmungsbedingungen von mehr als einer anderen Spalte?
Beispiel:
Angenommen, ich möchte den Median der Werte in C ermitteln, wenn A = 1 und B = x:
A B C
1 x 10
1 x 20
1 y 30
1 y 40
2 x 10
2 x 20
2 y 30
2 y 40
3 x 10
3 x 20
3 y 30
3 y 40
4 x 10
4 x 20
4 y 30
4 y 40
5 x 10
5 x 20
5 y 30
5 y 40
#Here is my attempt using IF and AND:
{=MEDIAN(IF(AND(A2:A21=1,B2:B21="x"),C2:C21))} #DEOSN'T WORK: should be 15, but it's 0
#subcomponents of above work fine on their own:
{=MEDIAN(IF(A2:A21=1,C2:C21)) } #equals 25 as expected
{=MEDIAN(IF(B2:B21="x",C2:C21))} #equals 15 as expected
Wie bekomme ich das hin und/oder gibt es einen anderen Ansatz, den ich verwenden sollte??
Antwort1
Vermeiden Sie die AND
Funktion, verwenden Sie IF
stattdessen verschachtelte s.
Speziell:
=MEDIAN(IF(A2:A21=1,IF(B2:B21="x",C2:C21)))
Das Problem besteht darin, dass es AND
in einem Array-Kontext nicht wie beabsichtigt funktioniert. Es AND
erzeugt nicht aus jedem Elementpaar ein Array, sondern verknüpft alle Elemente beider Arrays per UND, um ein einzelnes skalares Ergebnis zu erhalten.
Ihre ursprüngliche Formel wertet den gesamten AND
Aufruf zu einer einzigen Ausgabe von " FALSE
" aus (weil nicht jedes Element in beiden Arrays den Vergleich besteht).
Antwort2
Ich weiß nicht, warum es funktioniert, aber nach einigem Herumprobieren bin ich zu dem Schluss gekommen, dass ich mein Ziel mit Folgendem erreichen kann:
{=MEDIAN(IF((A2:A21=1)*(B2:B21="x"),C2:C21))} #gives correct 15
(Denken Sie auch hier daran, es mit Strg + Umschalt + Eingabe als Array zu verarbeiten.)
Ich vermute, dass die Funktion standardmäßig nur ein einzelnes „ oder“ AND
erzeugt und daher in diesem Kontext nicht funktionieren kann (was die Erzeugung eines Arrays aus Einsen und Nullen erfordert). Wenn ich jedoch jede Spalte als eigenes Array verarbeite, erzeuge ich für jede Unterbedingung eine Zeichenfolge aus Einsen und Nullen. Wenn ich dann mehrere bedingte Arrays multipliziere, ist das Ergebnis selbst ein Array aus Einsen und Nullen, in dem Einsen nur dann vorkommen, wenn die gewünschte Bedingung für beide jeweiligen Unterbedingungen erfüllt ist.TRUE
FALSE
Ich bin sicher, dass jemand dies in einem Kommentar bestätigen/erklären kann.