Excel精英培训网

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

[已解决]修改代码——关于筛选的精确/模糊查找

[复制链接]
发表于 2014-6-26 16:33 | 显示全部楼层 |阅读模式
本帖最后由 文轩馨婷 于 2014-6-27 08:35 编辑

与其说是修改代码,还不如说是求助编写代码(因为我也是在度娘哪里抄来的——而且没起到作用)

望:各位前辈们不吝赐教!!——有更好的模本我照样全收!

在此先谢过了!

要求:1.A1:E2是高级筛选的条件区
2.如何在B2:E2区域中填入需查找的“编码/名称/通知书号/出货日期”既可精确查找又可模糊查找并且查到的数据直接筛选在下面——查找的对象是“北海出货明细”


Sub 查询筛选()
Dim Erow, ce
With Sheets("查询筛选")
    Erow = Sheets("北海出货明细").[a65536].End(xlUp).Row
    .Range("a4:h65536").ClearContents
    For Each ce In .[b2:e2]
        If ce <> "" Then ce.Value = "*" & ce & "*"   '加上通配符*,实现模糊查询
    Next
    Sheets("北海出货明细").Range("A1:H" & Erow).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
    .[a1:h1], CopyToRange:=.[A4], Unique:=False
    For Each ce In .[b2:e2]
        If ce <> "" Then ce.Value = Mid(ce, 2, Len(ce) - 2)   '取消 "*"通配符
    Next
End With
End Sub

最佳答案
2014-6-26 21:45
你试试
  1. Sub aaa()
  2. Dim j&
  3. Range("a5:h" & [a65536].End(3).Row + 1).Clear
  4. With Sheets("北海出货明细")
  5.   If Cells(2, 5) <> "" Then .UsedRange.AutoFilter Field:=1, Criteria1:=Cells(2, 5).Value Else .UsedRange.AutoFilter Field:=1
  6.   For j = 2 To 4
  7.     If Cells(2, j) <> "" Then .UsedRange.AutoFilter Field:=j, Criteria1:="*" & Cells(2, j) & "*" Else .UsedRange.AutoFilter Field:=j
  8.   Next j
  9.   .UsedRange.Offset(1).Copy [a5]
  10.   .UsedRange.AutoFilter
  11. End With
  12. End Sub
复制代码
现代码筛选结果.png
格式.png

2014年北海走货数.zip

75.6 KB, 下载次数: 92

 楼主| 发表于 2014-6-26 17:50 | 显示全部楼层
一般情况————2楼一直都是本人的!!

{:1112:}{:1112:}{:1112:}{:1112:}
回复

使用道具 举报

 楼主| 发表于 2014-6-26 19:56 | 显示全部楼层
回复

使用道具 举报

发表于 2014-6-26 20:46 | 显示全部楼层
应该很简单,但是看画面我的2003版打不开,上传个2003版的上来吧.

评分

参与人数 1 +3 收起 理由
文轩馨婷 + 3 我那压缩文件兼容2003版

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-6-26 20:49 | 显示全部楼层
大灰狼1976 发表于 2014-6-26 20:46
应该很简单,但是看画面我的2003版打不开,上传个2003版的上来吧.

我这个可以用2003打开的
QQ拼音截图未命名.png
回复

使用道具 举报

发表于 2014-6-26 21:45 | 显示全部楼层    本楼为最佳答案   
你试试
  1. Sub aaa()
  2. Dim j&
  3. Range("a5:h" & [a65536].End(3).Row + 1).Clear
  4. With Sheets("北海出货明细")
  5.   If Cells(2, 5) <> "" Then .UsedRange.AutoFilter Field:=1, Criteria1:=Cells(2, 5).Value Else .UsedRange.AutoFilter Field:=1
  6.   For j = 2 To 4
  7.     If Cells(2, j) <> "" Then .UsedRange.AutoFilter Field:=j, Criteria1:="*" & Cells(2, j) & "*" Else .UsedRange.AutoFilter Field:=j
  8.   Next j
  9.   .UsedRange.Offset(1).Copy [a5]
  10.   .UsedRange.AutoFilter
  11. End With
  12. End Sub
复制代码

2014年北海走货数.rar

59.71 KB, 下载次数: 137

回复

使用道具 举报

发表于 2014-6-26 21:54 | 显示全部楼层
本帖最后由 大灰狼1976 于 2014-6-26 21:55 编辑

第9句代码稍加修改,有时候偷懒真不是好习惯
  1. Sub aaa()
  2. Dim j&
  3. Range("a5:h" & [a65536].End(3).Row + 1).Clear
  4. With Sheets("北海出货明细")
  5.   If Cells(2, 5) <> "" Then .UsedRange.AutoFilter Field:=1, Criteria1:=Cells(2, 5).Value Else .UsedRange.AutoFilter Field:=1
  6.   For j = 2 To 4
  7.     If Cells(2, j) <> "" Then .UsedRange.AutoFilter Field:=j, Criteria1:="*" & Cells(2, j) & "*" Else .UsedRange.AutoFilter Field:=j
  8.   Next j
  9.   .Range("a2:h" & .[a65536].End(3).Row).Copy [a5]
  10.   .UsedRange.AutoFilter
  11. End With
  12. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
文轩馨婷 + 3 就是这样,谢谢!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-6-27 08:36 | 显示全部楼层
大灰狼1976 发表于 2014-6-26 21:45
你试试

老师,
   您录制Macro2这个宏的作用是什么?
录制宏.png
回复

使用道具 举报

发表于 2014-6-27 21:47 | 显示全部楼层
录制这个宏的原因是,比较惭愧,很多简单的功能因为实在太简单了,反而我不会去记代码,
用的时候录制个宏看一下,嗯,就是这样,没有其他原因,你可以删除它。
回复

使用道具 举报

 楼主| 发表于 2014-6-28 08:25 | 显示全部楼层
大灰狼1976 发表于 2014-6-27 21:47
录制这个宏的原因是,比较惭愧,很多简单的功能因为实在太简单了,反而我不会去记代码,
用的时候录制个宏 ...

等于就是——如果我要借鉴到其它表中只需代码就行了咯
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 00:27 , Processed in 0.397255 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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