ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: cgx5871

[求助] 折磨了我三天的多条件筛选问题. 新的解决思路.

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-11-22 18:53 | 显示全部楼层
cgx5871 发表于 2017-11-22 18:46
我明白了,  应该是有空单元格的时候: 一. B1:B5, 中间有单元格为空时出错.
还有一个问题就是:
二. myr  ...

应该不是这个原因,我上面有Sheets("sheet1").AutoFilterMode = FalseIf Sheets("sheet1").FilterMode = True Then Sheets("sheet1").ShowAllData
这两名就是取消筛选的。可能是B列没有7行
If myr < 7 Then Exit Sub,程序就不会执行,是你说空的就不执行


TA的精华主题

TA的得分主题

发表于 2017-11-22 18:55 | 显示全部楼层
本帖最后由 ykytom 于 2017-11-22 19:11 编辑
cgx5871 发表于 2017-11-22 18:46
我明白了,  应该是有空单元格的时候: .
一. B1:B5, 中间有单元格为空时出错.
还有一个问题就是:

B1:B5为空我没考虑,稍微改下就行了

新建 Microsoft Excel 工作表.rar

17.46 KB, 下载次数: 1

TA的精华主题

TA的得分主题

发表于 2017-11-22 19:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 ykytom 于 2017-11-22 19:08 编辑
cgx5871 发表于 2017-11-22 18:46
我明白了,  应该是有空单元格的时候: .
一. B1:B5, 中间有单元格为空时出错.
还有一个问题就是:

             If InStr(brr(i, 1), arr(j, 1)) > 0 Then
                    If d.exists(brr(i, 1)) = False Then d(brr(i, 1)) = "": Exit For
改为
            If arr(j, 1) <> "" Then
                If InStr(brr(i, 1), arr(j, 1)) > 0 Then
                    If d.exists(brr(i, 1)) = False Then d(brr(i, 1)) = "": Exit For
                End If
            End If


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-11-22 19:34 | 显示全部楼层
Sheets("sheet1").AutoFilterMode = False
If Sheets("sheet1").FilterMode = True Then Sheets("sheet1").ShowAllData
这两句改为
ActiveSheet.AutoFilterMode = False
If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData
适用性更好,我也在学习

新建 Microsoft Excel 工作表.rar

17.59 KB, 下载次数: 2

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-11-22 19:40 | 显示全部楼层
ykytom 发表于 2017-11-22 19:04
If InStr(brr(i, 1), arr(j, 1)) > 0 Then
                    If d.exists(brr(i, 1)) = ...

基本上完美了~  谢谢.

突然觉得, B1:B5的模式,  是不科学的.
应该设计成类似网页搜索:
1. 综合在一个单元格, 作为搜索框.   
2. 输入的关健字, 空格分隔.  支持连接符&&之类.
这样才是真正的完美.

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-11-22 19:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ykytom 发表于 2017-11-22 19:34
Sheets("sheet1").AutoFilterMode = False
If Sheets("sheet1").FilterMode = True Then Sheets("sheet1") ...

ShownAllData, 又还要筛选,  感觉有点繁复.
[b7].End(xlUp).Row, 改用CurrentRegion  或  usedrange 来定位最后一格,  可以无视当前筛选状态.

TA的精华主题

TA的得分主题

发表于 2017-11-22 20:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
给你换个思路。多条件的用sql比较方便。
  1. Sub 筛选()
  2.     Set cnn = CreateObject("adodb.connection")
  3.     cnn.Open "provider=microsoft.ace.oledb.12.0;extended properties=excel 12.0;data source=" & ThisWorkbook.FullName
  4.     For i = 1 To 5
  5.         If Cells(i, 2) <> "" Then
  6.             tj = tj & " or 人名 like '%" & Cells(i, 2) & "%'"
  7.         End If
  8.     Next
  9.     If tj <> "" Then tj = "where 人名 like " & Mid(tj, 12)   '筛选条件:where 人名 like  '%张%' or 人名 like '%李%' 。。。。。
  10.      
  11.     Sql = "select 人名 from [sheet1$b6:b] " & tj
  12.     [c7].CopyFromRecordset cnn.Execute(Sql)
  13.     cnn.Close: Set cnn = Nothing
  14. End Sub
复制代码

新建 Microsoft Excel 工作表.rar

15.7 KB, 下载次数: 6

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-11-22 20:20 | 显示全部楼层
grf1973 发表于 2017-11-22 20:12
给你换个思路。多条件的用sql比较方便。

楼主意思是在不改变原数据的情况下筛选,你这样会破坏原数据

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-11-22 20:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
grf1973 发表于 2017-11-22 20:12
给你换个思路。多条件的用sql比较方便。

晕,  一入VBA深似海.又要花两天摸索SQL.
谢谢~

TA的精华主题

TA的得分主题

发表于 2017-11-22 20:40 | 显示全部楼层
ykytom 发表于 2017-11-22 20:20
楼主意思是在不改变原数据的情况下筛选,你这样会破坏原数据

谁说会破坏原数据的?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-14 06:25 , Processed in 0.028628 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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