Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: wszbd

[已解决]请高手帮忙!

[复制链接]
发表于 2013-10-24 07:42 | 显示全部楼层
Sub TEST()
    ARR = Range("V1:V" & Range("V65536").End(3).Row)
    BRR = Range("Y2:Y" & Range("Y65536").End(3).Row)
    Range("Z:Z").ClearContents
    For I = 1 To UBound(ARR)
        For J = 1 To UBound(BRR)
            S = 0
            W = ARR(I, 1)
            For T = 1 To Len(BRR(J, 1))
                Q = InStr(W, Mid(BRR(J, 1), T, 1))
                If Q Then
                    S = S + 1
                    W = Left(W, Q - 1) & Right(W, Len(W) - Q)
                End If
            Next
            If S = Len(BRR(J, 1)) Then Range("Z65536").End(3)(2) = ARR(I, 1): Exit For
        Next
    Next
    Range("Z1").Delete
End Sub
回复

使用道具 举报

 楼主| 发表于 2013-10-24 10:51 | 显示全部楼层
zjdh 发表于 2013-10-24 07:42
Sub TEST()
    ARR = Range("V1:V" & Range("V65536").End(3).Row)
    BRR = Range("Y2:Y" & Range("Y6 ...

谢谢!!!
回复

使用道具 举报

 楼主| 发表于 2013-10-29 01:22 | 显示全部楼层
zjdh 发表于 2013-10-23 13:03
删掉Z1空单元
Sub TEST()
    ARR = Range("V1:V" & Range("V65536").End(3).Row)

老师你好:
               如果Y列的一个单元格内重复的不杀(如Y4的77),那么程序该怎么修改,“是否得加一个判断”。
            
               还望老师在百忙之中,伸出援手,谢谢!!!
回复

使用道具 举报

发表于 2013-10-29 08:04 | 显示全部楼层
Sub TEST()
    ARR = Range("V1:V" & Range("V65536").End(3).Row)
    BRR = Range("Y2:Y" & Range("Y65536").End(3).Row)
    For I = 1 To UBound(ARR)
        For J = 1 To UBound(BRR)
            If Left(BRR(J, 1), 1) = Right(BRR(J, 1), 1) Then GoTo 10
            S = 0
            W = ARR(I, 1)
            For T = 1 To Len(BRR(J, 1))
                Q = InStr(W, Mid(BRR(J, 1), T, 1))
                If Q Then
                    S = S + 1
                    W = Left(W, Q - 1) & Right(W, Len(W) - Q)
                End If
            Next
            If S = Len(BRR(J, 1)) Then ARR(I, 1) = "": Exit For
10      Next
    Next
    Range("Z:Z").ClearContents
    For I = 1 To UBound(ARR)
        If ARR(I, 1) <> "" Then Range("Z65536").End(3)(2) = ARR(I, 1)
    Next
End Sub
回复

使用道具 举报

 楼主| 发表于 2013-10-29 14:13 | 显示全部楼层
zjdh 发表于 2013-10-29 08:04
Sub TEST()
    ARR = Range("V1:V" & Range("V65536").End(3).Row)
    BRR = Range("Y2:Y" & Range("Y6 ...

太棒了,谢谢!!
回复

使用道具 举报

 楼主| 发表于 2013-11-5 02:29 | 显示全部楼层
zjdh 发表于 2013-10-23 13:03
删掉Z1空单元
Sub TEST()
    ARR = Range("V1:V" & Range("V65536").End(3).Row)

筛选.rar (8.44 KB, 下载次数: 2)
回复

使用道具 举报

发表于 2013-11-5 07:46 | 显示全部楼层
一目了然的事,还要宏去完成?
加一句判断过滤掉吧!
Sub TEST()
    ARR = Range("V1:V" & Range("V65536").End(3).Row)
    BRR = Range("Y2:Y" & Range("Y65536").End(3).Row)
    If Not IsArray(ARR) Or Not IsArray(BRR) Then Exit Sub
    For I = 1 To UBound(ARR)
        For J = 1 To UBound(BRR)
          If Left(BRR(J, 1), 1) = Right(BRR(J, 1), 1) Then GoTo 10
            S = 0
            W = ARR(I, 1)
            For T = 1 To Len(BRR(J, 1))
                Q = InStr(W, Mid(BRR(J, 1), T, 1))
                If Q Then
                    S = S + 1
                    W = Left(W, Q - 1) & Right(W, Len(W) - Q)
                End If
            Next
            If S = Len(BRR(J, 1)) Then ARR(I, 1) = "": Exit For
10      Next
    Next
    Range("Z:Z").ClearContents
    For I = 1 To UBound(ARR)
        If ARR(I, 1) <> "" Then Range("Z65536").End(3)(2) = ARR(I, 1)
    Next
    Range("Z1").Delete
End Sub
回复

使用道具 举报

 楼主| 发表于 2013-11-5 10:52 | 显示全部楼层
zjdh 发表于 2013-11-5 07:46
一目了然的事,还要宏去完成?
加一句判断过滤掉吧!
Sub TEST()

Z列没有返回数组,377还是要返回到Z列的,怎么办?

谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 16:35 , Processed in 0.303506 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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