excel 计算连续单元重复值的vba问题[已关闭]

tjjdgumg  于 2023-11-20  发布在  其他
关注(0)|答案(3)|浏览(185)

**已关闭。**此问题需要debugging details。目前不接受回答。

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答问题。
14小时前关闭
Improve this question
我有一长串从0到360的数字列,像这样:

  1. 54
  2. 54
  3. 53
  4. 53
  5. 53
  6. ...
  7. ...
  8. 2
  9. 2
  10. 2
  11. 1
  12. 1
  13. 1
  14. 0 1
  15. 0
  16. 0
  17. 0
  18. 0
  19. 1
  20. 1
  21. 2
  22. 2
  23. 2
  24. ....
  25. ...
  26. 359
  27. 359
  28. 0 2
  29. 0
  30. 0

字符串
我想要的是,如果有一个连续的0行的列表,那么它计数为1,然后继续寻找下一个连续的0行,然后它继续计数为2,依此类推。
我如何编码这个,请帮助,谢谢
试图找到一个算法,在连续行中只计算一次重复值

tcomlyy6

tcomlyy61#

在Office 365中,您也可以使用扫描:=SUM(N(SCAN(,A1:A16,LAMBDA(a,b,IF(b=0,a+1,0)))=1))
根据您的需要更改范围
在旧版Excel中,您可以在B2中使用此选项,假设范围从A2开始:=IF(OR(A1,A1="")*EXACT(A2,0),IFERROR(LOOKUP(9^9,B$1:B1,B$1:B1+1),1),"")将此选项向下拖动。

piwo6bdm

piwo6bdm2#

作为公式(仅适用于X365,因为它使用Let

  1. =LET(x;IF(AND(A2=0;A1<>0);1;0);IF(x=1;SUM(B$1:B1)+1;""))

字符串
(假设你的数字从A2开始)。
第一个IF在所有单元格包含0且上面的单元格不为0时将其“标记”为1。第二个IF检查此值是否为1,如果是,则将上面的所有值相加(并加1)。

dbf7pr2w

dbf7pr2w3#

一个可能的解决方案:

  1. Sub Doit()
  2. Dim Thing As Range
  3. Dim zCount As Integer
  4. Dim iLastRow As Integer
  5. Dim i As Integer
  6. Set Thing = Range("A1")
  7. iLastRow = ActiveSheet.UsedRange.Rows.Count
  8. Thing.Select
  9. For i = 0 To iLastRow - 2
  10. If Thing.Offset(i, 0) = 0 And Thing.Offset(i + 1, 0) = 0 Then
  11. Thing.Offset(i, 0).Select
  12. zCount = zCount + 1
  13. Thing.Offset(i, 1).Value = zCount
  14. Do Until Thing.Offset(i + 1, 0) <> 0 Or i > iLastRow - 2
  15. i = i + 1
  16. Loop
  17. End If
  18. Next
  19. End Sub

字符串

展开查看全部

相关问题