Excel精英培训网

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

[已解决]删除有两组连续数字的行

[复制链接]
发表于 2013-11-7 14:12 | 显示全部楼层 |阅读模式
本帖最后由 ymq123 于 2013-11-7 15:32 编辑

1、请编写代码,删除第一组连续数字是2个数、第二组连续数字是3个数的行。
如第一行中1、2是二个连续数字,7、8、9是三个连续数字,删除此类行。
2、删除合值是24的行。如第八行的合值是24
最佳答案
2013-11-7 15:18
  1. Sub deleterow()
  2. Dim arr(), brr(), i As Integer, j As Byte, m As Integer, counter As Byte, counter1 As Byte, counter2 As Byte
  3. arr = Range("A1:I8").Value
  4. Range("A1:I8").Clear
  5. ReDim brr(1 To UBound(arr, 2), 1 To 1)
  6. For i = 1 To UBound(arr)
  7.   For j = 1 To UBound(arr, 2)
  8.     If Len(arr(i, j)) <> 0 And UBound(arr, 2) <> j Then
  9.       counter = counter + 1
  10.     Else
  11.       If Len(arr(i, j)) <> 0 Then counter = counter + 1
  12.       If counter = 2 Then counter1 = counter
  13.       If counter = 3 And counter1 = 2 Then counter2 = counter
  14.       counter = 0
  15.     End If
  16.     sums = sums + arr(i, j)
  17.   Next
  18.   If Not (sums = 24 Or counter1 = 2 And counter2 = 3) Then
  19.     m = m + 1
  20.     ReDim Preserve brr(1 To UBound(arr, 2), 1 To m)
  21.     For j = 1 To UBound(arr, 2)
  22.       brr(j, m) = arr(i, j)
  23.     Next
  24.   End If
  25.   counter = 0: counter1 = 0: counter2 = 0: sums = 0
  26. Next
  27. Range("A1").Resize(UBound(brr, 2), UBound(brr)) = Application.Transpose(brr)
  28. Range("A1").Resize(UBound(brr, 2), UBound(brr)).Borders.LineStyle = xlContinuous
  29. End Sub
复制代码
注译的话,语法可以看帮助,至于思路么,应该能理解的吧。。。

删除有两组连续数字的行.rar

7.31 KB, 下载次数: 14

发表于 2013-11-7 14:48 | 显示全部楼层
删除有两组连续数字的行.rar (22.33 KB, 下载次数: 12)

评分

参与人数 1 +3 收起 理由
ymq123 + 3

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-11-7 15:03 | 显示全部楼层
CheryBTL 发表于 2013-11-7 14:48

老师你好,我想请你在代码后面加注释,可以吗?谢谢
回复

使用道具 举报

发表于 2013-11-7 15:07 | 显示全部楼层
312906-VBA-删除指定条件的行.rar (14.67 KB, 下载次数: 4)

评分

参与人数 1 +3 收起 理由
ymq123 + 3

查看全部评分

回复

使用道具 举报

发表于 2013-11-7 15:18 | 显示全部楼层    本楼为最佳答案   
  1. Sub deleterow()
  2. Dim arr(), brr(), i As Integer, j As Byte, m As Integer, counter As Byte, counter1 As Byte, counter2 As Byte
  3. arr = Range("A1:I8").Value
  4. Range("A1:I8").Clear
  5. ReDim brr(1 To UBound(arr, 2), 1 To 1)
  6. For i = 1 To UBound(arr)
  7.   For j = 1 To UBound(arr, 2)
  8.     If Len(arr(i, j)) <> 0 And UBound(arr, 2) <> j Then
  9.       counter = counter + 1
  10.     Else
  11.       If Len(arr(i, j)) <> 0 Then counter = counter + 1
  12.       If counter = 2 Then counter1 = counter
  13.       If counter = 3 And counter1 = 2 Then counter2 = counter
  14.       counter = 0
  15.     End If
  16.     sums = sums + arr(i, j)
  17.   Next
  18.   If Not (sums = 24 Or counter1 = 2 And counter2 = 3) Then
  19.     m = m + 1
  20.     ReDim Preserve brr(1 To UBound(arr, 2), 1 To m)
  21.     For j = 1 To UBound(arr, 2)
  22.       brr(j, m) = arr(i, j)
  23.     Next
  24.   End If
  25.   counter = 0: counter1 = 0: counter2 = 0: sums = 0
  26. Next
  27. Range("A1").Resize(UBound(brr, 2), UBound(brr)) = Application.Transpose(brr)
  28. Range("A1").Resize(UBound(brr, 2), UBound(brr)).Borders.LineStyle = xlContinuous
  29. End Sub
复制代码
注译的话,语法可以看帮助,至于思路么,应该能理解的吧。。。
回复

使用道具 举报

发表于 2013-11-7 15:33 | 显示全部楼层
增加注释后,请查收:

删除有两组连续数字的行.rar (22.81 KB, 下载次数: 3)

评分

参与人数 1 +3 收起 理由
ymq123 + 3

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 21:03 , Processed in 0.255513 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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