多个数组的{Percentile函数

时间:2016-07-15 14:24:14

标签: excel-formula excel-2010

所以我现在在excel中有这些数据

  A             B           C
2015-1        Test 1        23    
2015-2        Test 1        12
2015-3        Test 1        43
2015-4        Test 1        32
2015-5        Test 1        3
2015-6        Test 1        90
2015-1        Test 2        200
2015-2        Test 2        123
2015-3        Test 2        21
2015-4        Test 2        40
2015-5        Test 2        17
2015-6        Test 2        138
2015-1        Test 3        160
2015-2        Test 3        55
2015-3        Test 3        30
2015-4        Test 3        74
2015-5        Test 3        67
2015-6        Test 3        89

现在,我拥有它,以便用户可以查看数据的特定时间段(不一定是所有日期)(例如,从2015-1到2015-4)。因此,当用户选择他们想要的日期时,我想在B列中不同测试场景的所有中获取该日期的数据百分位数(C列)。现在只有3,但最多将有100个不同的测试用例。

我知道可以做= Percentile((test1_data,test2_data,test3_data),1), 但我将不得不在100多个不同的测试用例中做出百分位数,而我现在设置它的方式似乎非常低效。有没有办法做到这一点,而无需手动输入所有100个不同的阵列?

1 个答案:

答案 0 :(得分:1)

根据您的表格,以下公式的内容应该有效。 (这是一个数组公式,当你在单元格中输入公式来激活函数时,你应该使用CTL + SHIFT + ENTER。)

{=PERCENTILE(
IF(NUMBERVALUE(LEFT($A$1:$A$18,4))<=EndYear,
IF(NUMBERVALUE(LEFT($A$1:$A$18,4))>=BegYear,
IF(NUMBERVALUE(RIGHT($A$1:$A$18,1))<=EndMonth,
IF(NUMBERVALUE(RIGHT($A$1:$A$18,1))>=BegMonth,
$C$1:$C$18)))),1)}
  • EndYear是对您想要包含的最后一年的单元格的引用
  • BegYear是对您想要包含的第一年的单元格的引用
  • EndMonth是对包含最后一个月(或第二个单位)的单元格的引用
  • BegMonth是对包含第一个月(或第二个单位)的单元格的引用

只需展开引用$A$1:$A$18$C$1:$C$18,即可包含您想要的许多测试用例。

公式解释

  1. 前两个if语句关注的是年份。它们将LEFT()四位数字作为字符串。 NUMBERVALUE()然后将字符串转换为值。然后,您可以使用if语句逻辑评估测试日期是否属于所需的日期范围。

  2. 后两位if语句在最后一位数(月份?)上完全相同

  3. 如果所有语句都为真,则嵌入的if语句将从列C返回关联值的数组;如果其中一个语句不为真,则返回FALSE。

  4. PERCENTILE()将获取数组,忽略返回为FALSE的项,并为您提供所有四个if语句都为真的值范围的第k个百分位数。

  5. *作为备注,我不知道你的第二个数字的重要性。如果它超过9,您可能需要调整数据。在这种情况下,您可以用2015-09替换所有2015-9条目,并将RIGHT()函数的第二个参数更改为2,或者您可以执行类似MID($A$1:$A$18,6,2)的操作或最后一个数字可能只是在年度争论之后,你会被许多人物所取代。