我遇到了一个大问题,我做了研究,但仍然无法得到正确的公式。请在此处查看类似问题的答案:
现在我想做的事情是一样的,只是略有不同。从 A1 行到 Z1 行,我有值。我希望公式计算某个数字比范围内的前一个数字多多少倍,但如果该数字小于前一个数字,我希望计数重置回 0。
所以
A 1
B 2
C 0
D 1
E 2
这里的答案是 2..因为在 C 处计数重置回 0。
有什么帮助吗?我从上一个链接中找到了公式
Function SumAfterZero(rng As Range) As Double
Dim r As Range
Dim output As Double
For Each r In rng
If r = 0 Then
output = 0
Else
output = output + r
End If
Next r
SumAfterZero = output
End Function
据我测试,它是有效的,但我必须将其更改为比较逻辑运算“<”,然后增加计数并且 NOT +r,所以我不知道该怎么做:)
答案1
如果我们有一系列范围内的整数A1:Z1
:
/-----------------------------------------------------------------------------------------------------------\
| | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
|---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---|
| 1 | 5 | 5 | 7 | 7 | 9 | 5 | 6 | 9 | 2 | 6 | 6 | 9 | 0 | 4 | 0 | 7 | 3 | 2 | 5 | 0 | 3 | 9 | 6 | 6 | 7 | 6 |
\-----------------------------------------------------------------------------------------------------------/
0
我们可以在中放置一个值A1
,并在中使用以下公式B2
(然后将其向右复制到Z2
:
=IF(B1>A1,A2+1,0)
结果如下:
/-----------------------------------------------------------------------------------------------------------\
| | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
|---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---|
| 1 | 5 | 5 | 7 | 7 | 9 | 5 | 6 | 9 | 2 | 6 | 6 | 9 | 0 | 4 | 0 | 7 | 3 | 2 | 5 | 0 | 3 | 9 | 6 | 6 | 7 | 6 |
| 2 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 2 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 2 | 0 | 0 | 1 | 0 |
\-----------------------------------------------------------------------------------------------------------/
第 2 行中的值表示第 1 行(从左到右)中大于前一个值(左侧)的连续值的数量。