Excel精英培训网

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

条件筛选

[复制链接]
发表于 2019-3-20 11:18 | 显示全部楼层 |阅读模式
本帖最后由 falcon9999 于 2019-3-20 12:31 编辑

想在工作表2中输入A列中的编码,相对输出对应列,请老师帮忙修改一下,部是默认从上往上搜索的第一个0的。
但我想要是为1的那行。

Sub 筛选()
Dim r, ARR, i, J, k, gonext
Application.ScreenUpdating = False
Set d = CreateObject("Scripting.Dictionary")
With ActiveSheet
     ARR = Worksheets("sheet1").[A1].CurrentRegion
     For J = 2 To UBound(ARR)
         d(ARR(J, 1)) = J
     Next
     r = .Range("A104587").End(xlUp).Row
          For i = 2 To r
          If d.exists(.Cells(i, 1).Value) Then
          J = d(.Cells(i, 1).Value)
            .Cells(i, 2) = ARR(J, 2)
            .Cells(i, 3) = ARR(J, 3)
            .Cells(i, 4) = ARR(J, 4)
            .Cells(i, 5) = ARR(J, 5)
            .Cells(i, 6) = ARR(J, 6)
            .Cells(i, 7) = ARR(J, 7)
         End If
     Next
End With
Application.ScreenUpdating = True
End Sub
表一

编码 名称ITEM数量 保留
980018155面包 广州5646455754 50
  980018155面包 上海5646454654 41
  980018155面包 北京5646433154 50
  980018155面包 深圳5646411555 40

查询.rar

17.97 KB, 下载次数: 8

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2019-3-20 11:23 | 显示全部楼层
如果没上传附件,别人看到的了也不好理解和回复呀
回复

使用道具 举报

 楼主| 发表于 2019-3-20 11:41 | 显示全部楼层
爱疯 发表于 2019-3-20 11:23
如果没上传附件,别人看到的了也不好理解和回复呀

爱疯老师好,附件上传了,麻烦老师帮忙看看,谢谢!
回复

使用道具 举报

发表于 2019-3-20 11:51 | 显示全部楼层
Sub 筛选()
    Dim r, ARR, i, J, k, gonext
    Application.ScreenUpdating = False
    Set d = CreateObject("Scripting.Dictionary")
    ARR = Worksheets("sheet1").[A1].CurrentRegion
    For J = 2 To UBound(ARR)
        If ARR(J, 7) = 1 Then d(ARR(J, 1)) = J
    Next

    Sheets(2).Select
    r = Range("A104587").End(xlUp).Row
    For i = 2 To r
        If d.exists(Cells(i, 1).Value) Then
            J = d(Cells(i, 1).Value)
            Cells(i, 2) = ARR(J, 2)
            Cells(i, 3) = ARR(J, 3)
            Cells(i, 4) = ARR(J, 4)
            Cells(i, 5) = ARR(J, 5)
            Cells(i, 6) = ARR(J, 6)
            Cells(i, 7) = ARR(J, 7)
        End If
    Next
End Sub



表1里的每种编码,只可能有1条记录的G列是1吗?

回复

使用道具 举报

 楼主| 发表于 2019-3-20 12:12 | 显示全部楼层
本帖最后由 falcon9999 于 2019-3-20 12:18 编辑
爱疯 发表于 2019-3-20 11:51
Sub 筛选()
    Dim r, ARR, i, J, k, gonext
    Application.ScreenUpdating = False

是的。老师,相同编码的G列为1的,只有1条。原来在判断 IF 加在上面就可以了,向老师学习了。谢谢!
回复

使用道具 举报

发表于 2019-3-20 12:43 来自手机 | 显示全部楼层
自动筛选表1的g列的值是1的,不是简单些。
回复

使用道具 举报

 楼主| 发表于 2019-3-20 14:30 | 显示全部楼层
爱疯 发表于 2019-3-20 12:43
自动筛选表1的g列的值是1的,不是简单些。

感谢老师的帮助!
表格数据很大,我经常需要查找几个或者十几个,使用筛选太卡,而且还慢,用宏是最准最快的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 10:35 , Processed in 0.424907 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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