![计算序列中的重复值——例如足球比分](https://linux22.com/image/1576541/%E8%AE%A1%E7%AE%97%E5%BA%8F%E5%88%97%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%80%BC%E2%80%94%E2%80%94%E4%BE%8B%E5%A6%82%E8%B6%B3%E7%90%83%E6%AF%94%E5%88%86.png)
我目前有一列如下所示的值,列出了足球比赛的结果。
Lost
Lost
Lost
Won
Drew
Drew
Won
Won
使用这个公式,我能够计算出序列重复的位置——因此对于上面的列表,连续有三个“丢失”。
=IF(A2=A1,B1+1,1)
但是,我想计算值为“Drew”或“Won”(从而显示没有出现“lost”的行数。这可能吗?
谢谢
答案1
这是一个模块子,它查看 A 列直到遇到空白单元格,然后将最大的非“丢失”条纹打印到单元格 B1。
Sub CountNonLoss()
Dim nonloss As Integer
Dim LongestStreak As Integer
Dim Val
Dim streak As New Collection
nonloss = 0
LongestStreak = 0
Range("A1").Select
Do Until IsEmpty(ActiveCell)
If ActiveCell.Value <> "Lost" Then
nonloss = nonloss + 1
Else
streak.Add nonloss
nonloss = 0
End If
ActiveCell.Offset(1, 0).Select
Loop
For Each Val In streak
If Val > LongestStreak Then
LongestStreak = Val
End If
Next Val
Range("B1").Value = LongestStreak
End Sub