求助,excel中两个值出现的最大间隔

查看 52|回复 3
作者:天籁音110   
a3131311026   

点击想要得到计算结果的格子,然后启用宏
[C] 纯文本查看 复制代码Sub huoqujiange()
    Dim hang, lie As Integer
    hang = ActiveCell.Row
    lie = ActiveCell.Column
    Dim panduan As Boolean
    Dim num As Integer
    panduan = True
    num = hang
    While panduan
        num = num - 1
        If Me.Cells(num, lie - 1).Value = Me.Cells(hang, lie - 1).Value Then
            num = hang - num - 1
            Me.Cells(hang, lie).Value = num
            panduan = False
        End If
    Wend
   
End Sub
cookiedongo   

通过在D列添加辅助列可以实现
D1公式:=IF(B1=TRUE,ROW(),"")
D2公式并下拉:=IF(B2=TRUE,ROW(),D1)
C2公式并下拉:=IF(B2=TRUE,ROW()-D1-1,"")
cookiedongo   

[Visual Basic] 纯文本查看 复制代码Sub test()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1") ' 请根据情况修改工作表名称
   
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row ' 找到 B 列中的最后一行
   
    Dim lastTrueRow As Long
    lastTrueRow = 0 ' 初始化上次出现 TRUE 的行号为 0
   
    Dim i As Long
    For i = 1 To lastRow ' 遍历 B 列的每一行
        If ws.Cells(i, "B").Value = True Then
            If lastTrueRow > 0 Then
                ws.Cells(i, "C").Value = i - lastTrueRow - 1 ' 计算间隔行数并写入 C 列
            End If
            lastTrueRow = i ' 更新上次出现 TRUE 的行号
        End If
    Next i
End Sub
用VB也能实现,方法如下:
1.按 Alt + F11 打开 VBA 编辑器
2.在 VBA 编辑器中,选择 Insert > Module 插入一个新模块。
3.将上述代码粘贴到模块中。
4.点击运行
您需要登录后才可以回帖 登录 | 立即注册

返回顶部