在Excel中获取条件过滤的值数组

时间:2019-02-16 00:07:01

标签: excel-formula

我正在寻找根据条件满足其他单元格条件的数据子集进行F.Test,T.Test,Var.S。为此,我需要一个数组,该数组代表有条件地满足我的条件的数据子集。在计算平均值时,我可以做AVERAGEIFS(),但是F.Test,T.Test和Var.S不能使用相同的条件结构。下面的样本数据集。

    A            B           C             D
1  Month      Employee      Part         Value
2  Jan          Tom          A            50    
3  Jan          Bob          A            55
4  Jan          Sally        B            40
5  Feb          Bob          A            45
6  Feb          Tom          A            75
7  Feb          Bob          A            60
8  Feb          Bob          B            65
9  Feb          Bob          A            55
10 Mar          Sally        B            70
11 Mar          Tom          B            40
12 Apr          Bob          B            50
13 Apr          Sally        A            45   
14 Apr          Sally        A            60
15 May          Bob          A            55
16 May          Tom          B            55
17 May          Bob          A            50
18 May          Sally        B            60

例如,如果我想知道Bob在2月的A部分中“值”列的方差,则此数组将包含3个值:45、60、55。我希望能够Var.S(CODE I NEED GOES HERE)

在我的真实数据集中,我有成千上万的数据行,因此,对于我的示例,手动输入VAR.S(D5, D7, D9)可以完成我想要的操作,但对于实际数据集而言,这是不可行的。

我认为无论采用什么解决方案来获得用于VAR.S的条件过滤数组,都可以应用于T.TEST和F.TEST所需的数组,但是如果不是这样,那么我也希望能找到解决方案。

非常感谢您能提供的任何帮助!

1 个答案:

答案 0 :(得分:1)

有一种创建基本数组公式的标准方法,该公式将条件引入通常不带条件的函数中。

'basic formula
=FUNCTION(<range1>, [optional range2], [optional range3], ...)
'array formula with one condition
=FUNCTION(IF(<condition1>, <range1>))
'array formula with two conditions
=FUNCTION(IF(<condition1>, IF(<condition2>, <range1>)))

在将这些数组公式键入或粘贴到工作表的公式栏中后,需要使用ctrl + shift + enter(又名CSE)完成它们;不只是输入。这样会将数学括号放在这样的公式周围,

{=FUNCTION(IF(<condition1>, <range1>))}

您不要自己输入这些内容。如果您使用CSE正确放置了数组公式,Excel将添加它们。

重要的是要注意,这两个条件是通过嵌套两个IF语句完成的。 不要尝试将两个或多个条件与AND或OR放在一起。 AND和OR已经是循环计算的一种形式,将无法在数组公式中正确运行。

同样重要的是要注意,数组公式会计算您提供给它们的所有内容。 不要使用完整的列引用;尝试将范围缩小到最小使用未使用单元格的大小。如果必须引用频繁变化的范围,则可以使用一些方法来动态地正确引用它们。

相同数据的公式:

'in G5:H5 per supplied image (Bob)
=VAR.S(D3, D5, D7:D9, D12, D15, D17)       'standard formula
=VAR.S(IF(B2:B18="bob", D2:D18))      'array formula with CSE

'in G8:H8 per supplied image (Bob, Feb)
=VAR.S(D5, D7:D9)                                    'standard formula
=VAR.S(IF(B2:B18="bob", IF(A2:A18="Feb", D2:D18)))  'array formula with CSE

'in G11:H11 per supplied image (Bob, Feb, A)
=VAR.S(D5, D7, D9)                                                  'standard formula
=VAR.S(IF(B2:B18="bob", IF(A2:A18="Feb", IF(C2:C18="A", D2:D18))))  'array formula with CSE

enter image description here

从上面的配对示例中可以看到,手动选择一组不同的单元格并有条件地使用数组公式进行过滤会产生相同的结果。