计算一条信息出现的频率并计算平均值

时间:2019-01-06 20:16:15

标签: excel vba excel-formula

我不想知道传统频率或传统平均值;所以我在下面举一个例子:

我有以下数据: 1个 3 5 5 2 3 5 5 1个 3

original data 1

我想获得的分析如下:

例如数字1每八行出现一次,数字3每四行出现一次,数字5每两行出现两次。...

analisis

我是手工完成的,但是现在我有超过21000行数据,而且卡住了。

我进行了搜索,但是找不到执行该功能的函数;但是在我开始开发自己的软件之前,我决定寻求有关如何实现它的指南。

2 个答案:

答案 0 :(得分:0)

我相信我能够达到预期的结果:

test1 test2
test3
公式是:

test4
  或者,如果您要复制/粘贴:

=IF(CONCATENATE("1-",MATCH(D1,INDIRECT(ADDRESS(MATCH(D1,A1:A17,0)+1,1,4)&":A17"),0))="1-1",CONCATENATE("2-",MATCH(D1,INDIRECT(ADDRESS(MATCH(D1,A1:A17,0)+2,1,4)&":A17"),0)-1),CONCATENATE("1-",MATCH(D1,INDIRECT(ADDRESS(MATCH(D1,A1:A17,0)+1,1,4)&":A17"),0)))  

请注意,IF函数可解决重复项(如数字5)。如果您一式三份,则必须添加另一个IF实例并相应地调整公式。

希望有帮助!

答案 1 :(得分:-1)

这不能完全重现您的结果,但是您可以从查看数字的最大和最小分隔开始:

=IF(COUNTIF(A$1:A$10,C2)<=1,"",MIN(IF((ROW(A$1:INDEX(A$1:A$10,COUNTIF(A$1:A$10,C2)+1))>1)
*(ROW(A$1:INDEX(A$1:A$10,COUNTIF(A$1:A$10,C2)+1))<=COUNTIF(A$1:A$10,C2)),
FREQUENCY(IF(A$1:A$10<>C2,ROW(A$1:A$10)),IF(A$1:A$10=C2,ROW(A$1:A$10)))))+1)

=IF(COUNTIF(A$1:A$10,C2)<=1,"",MAX(IF((ROW(A$1:INDEX(A$1:A$10,COUNTIF(A$1:A$10,C2)+1))>1)
*(ROW(A$1:INDEX(A$1:A$10,COUNTIF(A$1:A$10,C2)+1))<=COUNTIF(A$1:A$10,C2)),
FREQUENCY(IF(A$1:A$10<>C2,ROW(A$1:A$10)),IF(A$1:A$10=C2,ROW(A$1:A$10)))))+1)

enter image description here

这给出了每次出现特定编号之间的最小或最大行数。

必须使用 Ctrl Shift Enter

作为数组公式输入

您可以以相同的方式添加其他统计信息(例如平均值,标准差),尽管平均值可以仅通过(lastrow-firstrow)/(count-1)计算得出,例如对于5,它将是(8-3)/(4-1)= 5/3。