计算随机数字序列中项目的最大出现次数

时间:2016-02-26 13:31:44

标签: excel

所以,为方便起见,我在A1,A2,A3单元格中有一系列数字。它们是随机创建的,因此可以是0和1的任意组合。 我需要找到在任何时刻发生的最大1的数量,并将值放在A4中。 例如:

时间t1:(A1,A2,A3)是(0,0,0) - > result =(A4)为0 [因为没有1] 时间t2:时间t1:(A1,A2,A3)是(1,1,0) - > result =(A4)是2 [因为有2 1大于0(在t1)]
时间t3:时间t1:(A1,A2,A3)是(1,1,1) - > result =(A4)是3 [因为有3 1大于0(在t2)]
时间t4:(A1,A2,A3)是(0,1,0) - > result =(A4)是3 [因为只有一个1小于3(在t3)]

所以最终结果为3

我怎样才能做到这一点?

谢谢

3 个答案:

答案 0 :(得分:0)

好的,试试这个尺码。首先在任何给定时间计算所有的,例如:(假设单元格A4)

COUNTIF(A1:A3,1)

然后,你想要一个正在运行的"最大值"单元格,可以检查以验证它是否大于当前的计数。这可以使用宏脚本完成。右键单击您的Excel选项卡,选择"查看代码,"并将此代码输入代码窗口:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim OldValue As Range
Dim MaxValue As Range

Set KeyCells = Range("A1:A3")
Set OldValue = Range("A4") 'this is the current count of ones
Set MaxValue = Range("A6") 'this is the overall max number of ones

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
       Is Nothing Then

    ' Display a message when one of the designated cells has been
    ' changed.
    ' Place your code here.
   If OldValue > MaxValue Then
        MaxValue = OldValue
   End If

End If
End Sub

完成代码窗口后,选择file > close and return to microsoft excel

答案 1 :(得分:0)

根据您在评论中的反馈,我建议如下:

1)在单元格中输入值“0”:

2)在单元格A4中,输入以下公式:(非常类似于W3AVE的答案)..

=MAX(B1,COUNTIF(A1:A3,1))

基本上,您需要存储最高值,以满足您必须始终监控值的额外要求。

更新后,您需要将(仅限值)从A4复制到B1。 您可以手动执行此操作,也可以使用小型VBA脚本来执行此操作。

但是,由于它已在用户输入上更新,因此快速复制(仅限值)似乎是最简单的解决方案。

答案 2 :(得分:0)

这是一个用户定义的函数,可以在单个单元格中完成您想要的任务:

Public Function HighestNumber(rng As Range, num As Long)

    Static highest As Long
    Dim tmp As Long
    tmp = Application.WorksheetFunction.CountIf(rng, num)
    If tmp > highest Then highest = tmp
    HighestNumber = highest

End Function

=HighestNumber(A1:A3,1)

的单元格中调用它

请注意:如果您关闭工作簿,那么以前的" max"值被销毁,下次打开时会从头开始重新计算。