吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 376|回复: 5
收起左侧

[经验求助] 求助,excel中两个值出现的最大间隔

[复制链接]
天籁音110 发表于 2024-6-24 09:44
25吾爱币
如图所示

最佳答案

查看完整内容

1. 在C2单元格中输入公式: =IF(B2=TRUE, ROW(B2)-LOOKUP(2,1/(B$1:B1=TRUE), ROW(B$1:B1)), "") 作用是:如果当前单元格的值为TRUE,则计算当前行号与上一个TRUE值所在行号的差值,否则返回空值。 2. 将C2单元格的公式向下拖动,填充到C列的其他单元格。 C列将显示每个TRUE值与上次出现的TRUE值之间的行间隔。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xiaoboy 发表于 2024-6-24 09:44
1. 在C2单元格中输入公式:
   =IF(B2=TRUE, ROW(B2)-LOOKUP(2,1/(B$1:B1=TRUE), ROW(B$1:B1)), "")
作用是:如果当前单元格的值为TRUE,则计算当前行号与上一个TRUE值所在行号的差值,否则返回空值。
2. 将C2单元格的公式向下拖动,填充到C列的其他单元格。
C列将显示每个TRUE值与上次出现的TRUE值之间的行间隔。
a3131311026 发表于 2024-6-24 10:29
点击想要得到计算结果的格子,然后启用宏
[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 发表于 2024-6-24 10:52
本帖最后由 cookiedongo 于 2024-6-24 10:54 编辑

通过在D列添加辅助列可以实现
D1公式:=IF(B1=TRUE,ROW(),"")
D2公式并下拉:=IF(B2=TRUE,ROW(),D1)
C2公式并下拉:=IF(B2=TRUE,ROW()-D1-1,"")
cookiedongo 发表于 2024-6-24 11:00
[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.点击运行
jyjjf 发表于 2024-6-24 17:13
假定你的B列是逻辑值(所以下面公式B2*1和B1*1强制转换为数值),C2输入如下公式,向下拖拉
=IF(B2*1=1,IFERROR(ROW(B2)-LOOKUP(2,1/(B$1:B1*1=1),ROW(B$1:B1))-1,""),"")

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
天籁音110 + 1 + 1 我很赞同!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-16 00:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表