2009-04-12 7 views
11

Je suis en train de calculer la médiane conditionnelle d'un tableau qui ressemble à ceci: déclarationmédiane conditionnelle dans MS Excel

A | B 
------- 
x | 1 
x | 1 
x | 3 
x | 
y | 4 
z | 5 

J'utilise MS Excel 2007. Je suis conscient de la AVERAGEIF(), mais il n'y a pas d'équivalent pour Médian. L'astuce principale est qu'il y a des lignes sans données - comme le 4ème "a" ci-dessus. Dans ce cas, je ne veux pas du tout considérer cette ligne dans les calculs.

recherche sur Google a suggéré ce qui suit, mais Excel n'acceptera pas le format de la formule (peut-être parce qu'il est 2007?)

=MEDIAN(IF((A:A="x")*(A:A<>"")), B:B) 

Excel donne une erreur disant qu'il ya quelque chose de mal avec ma formule (quelque chose à voir avec le * dans l'état) j'avais aussi essayé ce qui suit, mais il compte les cellules vides comme 0 dans les calculs:

=MEDIAN(IF(A:A = "x", B:B, "") 

Je suis conscient que ces formules Excel renvoient « tableaux », ce qui signifie, il faut entrer « Ctrl -shift-enter "pour le faire fonctionner correctement.

Comment effectuer une évaluation conditionnelle et ne pas prendre en compte les cellules vides?

Répondre

8

Instructions imbriquées si.

=MEDIAN(IF(A:A = "x",IF(B:B<>"",B:B, ""),"") 

Pas grand chose à expliquer - cela vérifie si A est x. Si c'est le cas, il vérifie si B n'est pas vide. Tout ce qui correspond aux deux conditions est calculé dans le cadre de la médiane.

Compte tenu de l'ensemble de données suivantes:

A | B 
------ 
x | 
x |  
x | 2 
x | 3 
x | 4 
x | 5 

La formule ci-dessus renvoie 3,5, ce qui est ce que je crois que vous vouliez.

+1

Je devais faire une formule matricielle pour que cela fonctionne. C'est à dire. '{= MEDIAN (SI (A: A =" x ", SI (B: B <>" ", B: B))}' travaille pour moi (les autres instructions ne sont pas nécessaires) .Bonne réponse, néanmoins! – Therkel

4

Utilisez la formule googlé, mais au lieu de frapper Entrez après que vous tapez dans la barre de formule, a frappé Ctrl +Maj +Entrez simultanément (au lieu de Entrez). Cela place des parenthèses autour de la formule et la traitera comme un tableau.

Soyez averti, si vous l'éditez, vous ne pouvez pas frapper Entrez à nouveau ou la formule ne sera pas valide. Si vous éditez, vous devez faire la même chose lorsque vous avez terminé (Ctrl + Shift + Entrez).

2

Il existe une autre méthode qui n'implique pas la formule matricielle qui nécessite l'opération CtrlShiftEnter. Il utilise la fonction Aggregate() offerte dans Excel 2010, 2011 et au-delà. La méthode fonctionne également pour les percentiles min, max et divers. Aggregate() permet d'ignorer les erreurs. L'astuce consiste donc à faire en sorte que toutes les valeurs non requises entraînent des erreurs. Le plus simple est de faire le jeu de tâches ci-dessus est:

= Agrégat (16,6, (B: B)/((A: A = "x") * (B: B <> "")) , 0.5)

Les premier et dernier paramètres définissent la scène pour faire un percentile 50%, qui est une médiane, le second dit ignorer toutes les erreurs (y compris DIV # 0) et le troisième dit sélectionner les données de la colonne B, et diviser par un nombre qui est un pour toutes les valeurs non vides qui ont un x dans la colonne A, et un zéro sinon. Les zéros créent une division par zéro exception et seront ignorés car a/1 = a et a/0 = Div # 0

La technique fonctionne pour les quartiles (avec une valeur p appropriée), tous les autres centiles bien sûr, et pour max et min en utilisant la fonction grande ou petite avec des arguments appropriés. Ceci est une construction similaire aux astuces Sumproduct() qui sont si populaires, mais qui ne peuvent pas être utilisées sur des quantiles ou des valeurs max min car elles produisent des zéros qui ressemblent à des nombres à ces fonctions.

Bob Jordan

+0

Si vous cherchez à éviter les tableaux (comme je le suis généralement), la solution de Bob fonctionne bien et peut être personnalisée avec autant de critères que nécessaire. – NikG

0

Peut-être de généraliser un peu plus, au lieu de cela ...

{=MEDIAN(IF(A:A="x",IF(B:B<>"",B:B)))} 

... vous pouvez utiliser les éléments suivants:

{=QUARTILE.EXC(IF(A:A="x",IF(B:B<>"",B:B)),2)} 

Notez que les accolades se réfèrent à une formule matricielle; Vous ne devez pas placer les crochets dans votre formule, mais appuyez sur CTRL + MAJ + ENTRÉE (ou CMD + MAJ + ENTRÉE sur macOS) lorsque vous entrez la formule

Ensuite, vous pouvez facilement obtenir le premier et le troisième quartile en modifiant le dernier nombre de à respectivement respectivement. QUARTILE.EXC est ce que la plupart des logiciels statistiques commerciaux (par exemple Minitab) utilisent en passant. La fonction "regular" est QUARTILE.INC, ou pour les anciennes versions d'Excel, juste QUARTILE.

Questions connexes