如何用Excel计算某一时间段最大连胜场数?

来源:百度知道 编辑:UC知道 时间:2024/06/18 17:12:24
2009-8-6 4
2009-8-6 -5
2009-8-6 3
2009-8-7 3
2009-8-7 5
2009-8-7 6
2009-8-8 7
2009-8-8 3
2009-8-8 3
2009-8-8 3
2009-8-8 -4
2009-8-8 -5
2009-8-8 -7
2009-8-8 -5
2009-8-8 5
2009-8-8 6
2009-8-8 5
2009-8-8 4
2009-8-9 -4
2009-8-9 4
2009-8-9 4
2009-8-9 -5
2009-8-9 -3

描述:
有以上这组数据:A1到A23为日期,B1到B23为分数,B列数值大于0为胜场,小于0为负场。

利用以下数组公式:
{=MAX(FREQUENCY(IF(B1:B23>0,ROW(B1:B23)),IF(B1:B23<0,ROW(B1:B23))))}

可以求得B1到B23中的最大连胜场数为8(即B3到B10均为胜场)。

问题:
现在要求某个时间段(如:2009-8-8至2009-8-9)的连胜场数(应为4),请教公式该如何写?
时间段的起始时期和终止日期要做为变量,随时可更改。
初始数据如图所示。

数组公式:
=MAX(FREQUENCY(IF((A1:A23>=DATE(2009,8,8))*(A1:A23<=DATE(2009,8,9))*(B1:B23>0),ROW(B1:B23)),IF((A1:A23>=DATE(2009,8,8))*(A1:A23<=DATE(2009,8,9))*(B1:B23<0),ROW(B1:B23))))

没那么难滴,加控件很好做的。
第一步,在空白处起一列,筛选出不重复值(可以用动态数据列)。
第二步,在不重复值普遍另起一列,输入match函数获取不重复值第一次出现的序号。
第三步,用以上的函数结合indirect函数,即可完成。

公式如下:
=MAX(FREQUENCY(IF(INDIRECT("b"&MATCH(D1,$A$1:$A$35,0)&":b"&MATCH(F1,$A$1:$A$35,0))>0,ROW(INDIRECT("b"&MATCH(D1,$A$1:$A$35,0)&":b"&MATCH(F1,$A$1:$A$35,0)))),IF(INDIRECT("b"&MATCH(D1,$A$1:$A$35,0)&":b"&MATCH(F1,$A$1:$A$35,0))<0,ROW(INDIRECT("b"&MATCH(D1,$A$1:$A$35,0)&":b"&MATCH(F1,$A$1:$A$35,0))))))

电脑受限制,图片我就不传上去了。

D1和F1分别是起始日期和终止日期(可手动输入或者设置为数据有效性,下拉选择)。A列还是和你的数据一样。

用VBA可以做到,需要的话Hi我一下。