excel 或 VBA 中是否有用于计算值组的公式?例如,如果我有一列,其中有 1、2、3 或 4 个组的“X”

excel 或 VBA 中是否有用于计算值组的公式?例如,如果我有一列,其中有 1、2、3 或 4 个组的“X”

如果 B 列有 8 行,则有 xx xxx xx xxxx xx xxxx xx xxx。我需要找出有多少组两个 X、三个 x 和四个 x。上述结果将是 xx = 4、xxx = 2 和 4 = 2。我试过 VBA,但计数从来都不正确。

这是 H 列中带有单词“TRUE”的图像。我试图计算它们连续出现两次、三次或四次(最多六次)“True”的次数

答案1

如果我理解正确的话,也许是这样的?

Sub test()
Dim rg As Range
Dim ocr1, ocr2, ocr3, ocr4, ocr5, ocr6, ocr7

Set rg = Range("H1")
If rg = "" Then Set rg = rg.End(xlDown)

    Do
        If rg.Offset(1, 0) <> "" Then
            Select Case Range(rg, rg.End(xlDown)).Rows.Count
                Case 2: ocr2 = ocr2 + 1
                Case 3: ocr3 = ocr3 + 1
                Case 4: ocr4 = ocr4 + 1
                Case 5: ocr5 = ocr5 + 1
                Case 6: ocr6 = ocr6 + 1
                Case 7: ocr7 = ocr7 + 1
            End Select
            Set rg = rg.End(xlDown).End(xlDown)
        Else
            ocr1 = ocr1 + 1
            Set rg = rg.End(xlDown)
        End If
    Loop Until rg.Row = Rows.Count

Debug.Print "no consecutive occurence = " & ocr1
Debug.Print "two consecutive occurence = " & ocr2
Debug.Print "three consecutive occurence = " & ocr3
Debug.Print "four consecutive occurence = " & ocr4
Debug.Print "five consecutive occurence = " & ocr5
Debug.Print "six consecutive occurence = " & ocr6
Debug.Print "seven consecutive occurence = " & ocr7

End Sub

目标是获取每个连续行中某个值出现的次数。

rg 变量是要开始的单元格。
如果 rg 为空,则执行 end(xldown) 并将此单元格设置为 rg。

然后它循环

首先,它检查 rg 下方的单元格是否为空,如果为空则表示没有连续出现,因此它将 ocr1 变量加 1,然后将 rg 设置为下一个具有值的 rg

如果 rg 下方的单元格不为空,则使用一个案例来说明连续出现的范围有多少行。每个行都分配给各自的变量。

如果有连续两行有值,则将 ocr2 加 1。
如果有连续三行有值,则将 ocr3 加 1。
以此类推。
然后将 rg 设置为下一个有值的 rg

由于我不知道最大值有多少个连续的行,所以我只将其设为 7。如果您知道存在限制(意味着您知道具有值的连续行不会超过 4),那么只需删除案例 5 到案例 7。

再次运行图片中显示的工作表处于活动状态的子程序
,如果我理解正确的话。

相关内容