ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 354|回复: 15

[求助] 删除单元格连续出现次数超指定数的行

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-12-2 16:44 | 显示全部楼层 |阅读模式
删除数据.rar (8.28 KB, 下载次数: 10)
向各位老大请教,如果用数组删除连续出现次数超出范围的数据,谢谢

TA的精华主题

TA的得分主题

发表于 2025-12-2 16:52 | 显示全部楼层
感觉你的表达,逻辑混乱。可能你自己都不知道要什么条件,要什么结果 。

看着真的费劲。想猜都猜不出来,你要表达的什么。

自己捋一捋吧!

TA的精华主题

TA的得分主题

发表于 2025-12-2 17:08 | 显示全部楼层
请检测结果

删除数据.rar

17.11 KB, 下载次数: 5

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-12-2 17:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub DeleteRowsBasedOnCondition()
    Dim ws As Worksheet
    Dim lastRow As Long, lastCol As Long
    Dim i As Long, j As Long
    Dim currentVal As Variant
    Dim count1 As Long, count2 As Long
    Dim maxCount1 As Long, maxCount2 As Long
    Dim deleteRow As Boolean
   
    Set ws = ThisWorkbook.Sheets("Sheet1") '修改为你的工作表名
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
   
    '从最后一行开始向上遍历,避免删除行时索引错乱
    For i = lastRow To 1 Step -1
        deleteRow = False
        maxCount1 = 0
        maxCount2 = 0
        count1 = 0
        count2 = 0
        
        '遍历该行的每一列
        For j = 1 To lastCol
            currentVal = ws.Cells(i, j).Value
            
            '判断当前值是否为1或2
            If currentVal = 1 Then
                count1 = count1 + 1
                count2 = 0 '重置2的计数
                If count1 > maxCount1 Then maxCount1 = count1
            ElseIf currentVal = 2 Then
                count2 = count2 + 1
                count1 = 0 '重置1的计数
                If count2 > maxCount2 Then maxCount2 = count2
            Else
                '遇到其他数值,重置计数
                count1 = 0
                count2 = 0
            End If
        Next j
        
        '检查是否满足删除条件
        If maxCount1 > 2 Or maxCount2 > 3 Then
            deleteRow = True
        End If
        
        '删除行
        If deleteRow Then
            ws.Rows(i).Delete
        End If
    Next i
   
    MsgBox "删除完成!"
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-12-2 17:09 | 显示全部楼层
cpa_cpv 发表于 2025-12-2 16:52
感觉你的表达,逻辑混乱。可能你自己都不知道要什么条件,要什么结果 。

看着真的费劲。想猜都猜不出来 ...

老大,指一行数据中,1相邻同为1不能超过2次,2不能超过3,其中一个,超过目标,删除此行

TA的精华主题

TA的得分主题

发表于 2025-12-2 17:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
删除单元格连续出现次数超指定数的行

删除单元格连续出现次数超指定数的行.rar

18.52 KB, 下载次数: 4

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-12-2 17:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

老大,不是两个之各不超过4个,1在一行连续不超过2个,2连续出现在一行不超过3个,

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-12-2 17:25 | 显示全部楼层
fgq5910 发表于 2025-12-2 17:12
删除单元格连续出现次数超指定数的行

太感谢了,我把1与2设置为变量,把判断值也设定为变量就可以了。

TA的精华主题

TA的得分主题

发表于 2025-12-2 17:28 | 显示全部楼层
删除数据(修改)

删除数据(修改).rar

16.15 KB, 下载次数: 1

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-12-2 17:31 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub DeleteRows()
    Dim i As Long, j As Long, c1 As Long, c2 As Long, m1 As Long, m2 As Long
    Dim ws As Worksheet: Set ws = Sheets("Sheet1")
    Dim lastRow As Long: lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    Dim lastCol As Long: lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
   
    For i = lastRow To 1 Step -1
        c1 = 0: c2 = 0: m1 = 0: m2 = 0
        For j = 1 To lastCol
            Select Case ws.Cells(i, j).Value
                Case 1: c1 = c1 + 1: c2 = 0: If c1 > m1 Then m1 = c1
                Case 2: c2 = c2 + 1: c1 = 0: If c2 > m2 Then m2 = c2
                Case Else: c1 = 0: c2 = 0
            End Select
        Next
        If m1 > 2 Or m2 > 3 Then ws.Rows(i).Delete
    Next
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-12-10 18:49 , Processed in 0.037172 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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