Excel精英培训网

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

[已解决]代码出错,求助各位高手!

[复制链接]
发表于 2013-4-27 09:45 | 显示全部楼层 |阅读模式
我的程序运行错误,要求是对meigesheet表都进行相同的操作:
1,如果G列的某一行的数值的绝对值大于0.3,那么就需要删除J列这一行的那个数值,,同时还要删除这个值上下的两个值;
2,如果H列的某一行的绝对值大于40,同样,需要删除J列这一行的那个数值,,同时还要删除这个值上下的两个值;
3,如果I列的某一行的绝对值大于10000,同样,需要删除J列这一行的那个数值,,同时还要删除这个值上下的两个值;
heet2,sheet3.。。。。。。都进行相同的操作, 具体见附件,谢谢了!


Sub Macro2()

Dim arr, i&, k&
For k = 1 To Sheets.Count
    If Sheets(k).Range("a1") <> "" Then
        arr = Range("a1").CurrentRegion
        For i = 1 To UBound(arr)
            If Abs(arr(i, 7)) > 0.3 Or Abs(arr(i, 8)) > 40 Or Abs(arr(i, 9)) > 10000 Then arr(i, 10) = ""
            If i > 1 And i < UBound(arr) Then
                If Abs(arr(i, 7)) > 0.3 Or Abs(arr(i, 8)) > 40 Or Abs(arr(i, 9)) > 10000 Then arr(i - 1, 10) = "": arr(i + 1, 10) = ""
            End If
        Next
        Sheets(k).Range("a1").Resize(UBound(arr), UBound(arr, 2)) = arr
    End If
Next
End Sub
最佳答案
2013-4-27 10:11
Sub Macro2()

Dim arr, i&, k&
For k = 1 To Sheets.Count
    If Sheets(k).Range("a1") <> "" Then
        arr = Sheets(k).Range("a1").CurrentRegion
        For i = 1 To UBound(arr)
            If Abs(arr(i, 7)) > 0.3 Or Abs(arr(i, 8)) > 40 Or Abs(arr(i, 9)) > 10000 Then arr(i, 10) = ""
            If i > 1 And i < UBound(arr) Then
                If Abs(arr(i, 7)) > 0.3 Or Abs(arr(i, 8)) > 40 Or Abs(arr(i, 9)) > 10000 Then arr(i - 1, 10) = "": arr(i + 1, 10) = ""
            End If
        Next
        Sheets(k).Range("a1").Resize(UBound(arr), UBound(arr, 2)) = arr
    End If
Next
End Sub

合并3.rar

121.87 KB, 下载次数: 0

 楼主| 发表于 2013-4-27 09:50 | 显示全部楼层
运行代码以后,本来每个sheet的数据是不同的,运行程序之后,每个sheet的数据变成相同的了。
回复

使用道具 举报

发表于 2013-4-27 10:11 | 显示全部楼层    本楼为最佳答案   
Sub Macro2()

Dim arr, i&, k&
For k = 1 To Sheets.Count
    If Sheets(k).Range("a1") <> "" Then
        arr = Sheets(k).Range("a1").CurrentRegion
        For i = 1 To UBound(arr)
            If Abs(arr(i, 7)) > 0.3 Or Abs(arr(i, 8)) > 40 Or Abs(arr(i, 9)) > 10000 Then arr(i, 10) = ""
            If i > 1 And i < UBound(arr) Then
                If Abs(arr(i, 7)) > 0.3 Or Abs(arr(i, 8)) > 40 Or Abs(arr(i, 9)) > 10000 Then arr(i - 1, 10) = "": arr(i + 1, 10) = ""
            End If
        Next
        Sheets(k).Range("a1").Resize(UBound(arr), UBound(arr, 2)) = arr
    End If
Next
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 19:42 , Processed in 0.701685 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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