Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2750|回复: 2

[已解决]删除表格中数字大于等于6的行

[复制链接]
发表于 2015-1-3 11:35 | 显示全部楼层 |阅读模式
请编写代码
删除工作表2中每行数字大于等于6个的行(红色字是要删除的行),工作表3内是删除结果。
最佳答案
2015-1-4 15:32
Sub test()
    Dim arr, brr()
    Dim i&, j&, k%, m&

    'arr = Range("a1").CurrentRegion    '
    arr = Sheets(2).Range("a1:j11").Value   '数据源区域按实际自行修改
    ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))

    For i = 1 To UBound(arr)
        k = 0
        For j = 1 To UBound(arr, 2)
            If arr(i, j) <> "" Then k = k + 1
            If k >= 6 Then Exit For
        Next
        If k < 6 Then
            m = m + 1
            For j = 1 To UBound(arr, 2)
                brr(m, j) = arr(i, j)
            Next
        End If
    Next

    With Sheets(3)
        .UsedRange.Clear
        If m > 0 Then .Range("a1").Resize(m, UBound(arr, 2)) = brr
    End With

End Sub

删除表格中数字大于等于6的行.rar

16.64 KB, 下载次数: 18

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-1-4 15:32 | 显示全部楼层    本楼为最佳答案   
Sub test()
    Dim arr, brr()
    Dim i&, j&, k%, m&

    'arr = Range("a1").CurrentRegion    '
    arr = Sheets(2).Range("a1:j11").Value   '数据源区域按实际自行修改
    ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))

    For i = 1 To UBound(arr)
        k = 0
        For j = 1 To UBound(arr, 2)
            If arr(i, j) <> "" Then k = k + 1
            If k >= 6 Then Exit For
        Next
        If k < 6 Then
            m = m + 1
            For j = 1 To UBound(arr, 2)
                brr(m, j) = arr(i, j)
            Next
        End If
    Next

    With Sheets(3)
        .UsedRange.Clear
        If m > 0 Then .Range("a1").Resize(m, UBound(arr, 2)) = brr
    End With

End Sub

回复

使用道具 举报

发表于 2015-1-4 17:23 | 显示全部楼层
一定要用代码吗?自己又不会,加个辅助列,统计一下每行数字个数,排序,大于6的删除得了
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 20:06 , Processed in 0.268593 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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