ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4025|回复: 8

[求助] 多条件模糊查找宏代码求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-4-18 12:39 | 显示全部楼层 |阅读模式
本人对EXCEL宏编辑小白,想通过宏控件实现在sheet3中对附件中sheet1数据进行多条件模糊查询并显示,即sheet1中建立基础信息,在sheet3显示结果,在sheet3中的A2:I2中输入关键字,如在sheet3 A2中输入“卡特”,点查询按钮所有供应商为卡特的将显示出来,可以多条件,例如在sheet3 A2 输入“卡特”,B2中输入“接头”,那么供应商为卡特,零件名称含有接头的将全部显示出来,本人从网上找取了一些代码,但是不能实现查询功能, 附件为测试表格 ,还请高人指点,十分感谢!! 测试.zip (21 KB, 下载次数: 303)


TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-18 13:13 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-4-18 13:44 | 显示全部楼层
kongjianting 发表于 2014-4-18 13:13
速求高人帮忙啊

建议你发到 数据透视表版块 或者VBA使用SQL应该可以实现

小白啊 随便说说

TA的精华主题

TA的得分主题

发表于 2014-4-18 13:56 | 显示全部楼层
供参考:
Sub 查询筛选()
Dim Erow As Integer, rng As Range, flag As Boolean
With Sheets("sheet3")
    Erow = Sheets("Sheet1").[a65536].End(xlUp).Row
    arr1 = Sheets("Sheet1").Range("a2:i" & Erow)
    arr2 = .Range("a2:i2")
    .Range("a3:i65536").ClearContents
    For i = 1 To UBound(arr1)
        flag = True
        For j = 1 To 9
            If Not arr1(i, j) Like "*" & arr2(1, j) & "*" Then
                flag = False
                Exit For
            End If
        Next
        If flag Then
            If rng Is Nothing Then
                Set rng = Sheets("Sheet1").Rows(i + 1)
            Else
                Set rng = Union(rng, Sheets("Sheet1").Rows(i + 1))
            End If
        End If
    Next
    If Not rng Is Nothing Then rng.Copy .Range("a3")
    Set rng = Nothing
End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-18 14:02 | 显示全部楼层
ed2003 发表于 2014-4-18 13:56
供参考:
Sub 查询筛选()
Dim Erow As Integer, rng As Range, flag As Boolean

高人啊,十分感谢!

TA的精华主题

TA的得分主题

发表于 2014-4-18 14:29 | 显示全部楼层
ed2003 发表于 2014-4-18 13:56
供参考:
Sub 查询筛选()
Dim Erow As Integer, rng As Range, flag As Boolean

小白没理解 If flag Then
             If rng Is Nothing Then
                 Set rng = Sheets("Sheet1").Rows(i + 1)
             Else
                 Set rng = Union(rng, Sheets("Sheet1").Rows(i + 1))
             End If
这两句。大神能解释下吗? 谢谢

TA的精华主题

TA的得分主题

发表于 2017-5-26 11:50 | 显示全部楼层
ed2003 发表于 2014-4-18 13:56
供参考:
Sub 查询筛选()
Dim Erow As Integer, rng As Range, flag As Boolean

请教大神,同一列多条件该怎么写呢?

TA的精华主题

TA的得分主题

发表于 2017-5-26 12:46 | 显示全部楼层
ed2003 发表于 2014-4-18 13:56
供参考:
Sub 查询筛选()
Dim Erow As Integer, rng As Range, flag As Boolean

牛掰,学习了~

TA的精华主题

TA的得分主题

发表于 2019-1-22 09:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不错,学习了~谢谢分享
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-19 11:09 , Processed in 0.052184 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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