所以我现在在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个不同的阵列?
答案 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
,即可包含您想要的许多测试用例。
公式解释
前两个if语句关注的是年份。它们将LEFT()
四位数字作为字符串。 NUMBERVALUE()
然后将字符串转换为值。然后,您可以使用if语句逻辑评估测试日期是否属于所需的日期范围。
后两位if语句在最后一位数(月份?)上完全相同
如果所有语句都为真,则嵌入的if语句将从列C返回关联值的数组;如果其中一个语句不为真,则返回FALSE。
PERCENTILE()
将获取数组,忽略返回为FALSE的项,并为您提供所有四个if语句都为真的值范围的第k个百分位数。
*作为备注,我不知道你的第二个数字的重要性。如果它超过9,您可能需要调整数据。在这种情况下,您可以用2015-09替换所有2015-9条目,并将RIGHT()
函数的第二个参数更改为2,或者您可以执行类似MID($A$1:$A$18,6,2)
的操作或最后一个数字可能只是在年度争论之后,你会被许多人物所取代。