所以,为方便起见,我在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
我怎样才能做到这一点?
谢谢
答案 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"值被销毁,下次打开时会从头开始重新计算。