ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] 【69期】根据关键字设置数据有效性

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-1-13 15:55 | 显示全部楼层
太棒了……答案能直接引用,对于像我这样的低手太有用,拿过来就用。谢谢组织都都 答题者。

TA的精华主题

TA的得分主题

发表于 2016-3-2 14:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
套用了,公式却显示出来,不知道哪里出错了

TA的精华主题

TA的得分主题

发表于 2016-9-19 09:11 | 显示全部楼层
zhangjimfu 发表于 2011-1-3 15:47
操作步骤:

1、在点菜单B3:B17找到需要查找的值,放到固定位置I2。

牛啊 我正在找这个东西 太感谢了

TA的精华主题

TA的得分主题

发表于 2017-3-21 15:57 | 显示全部楼层
这个一模一样的功能如何用VBA实现

TA的精华主题

TA的得分主题

发表于 2017-3-28 20:59 | 显示全部楼层
首先感谢版主!我现在拿这个用于筛选预定信息,但是只能选前1000行,请问怎么筛选更多行呢???谢谢

TA的精华主题

TA的得分主题

发表于 2017-10-2 13:07 | 显示全部楼层
本帖最后由 活在理想的世界 于 2017-10-2 13:08 编辑

VBA版本的只能先按ENTER键或者TAB键才能筛选,直接弄无法找到焦点,我试了许多次发现没有事件支持,不知楼主是否有办法?

  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Call DD
  3. Dim arr(), crr()
  4. k = Sheet1.Range("a1048576").End(3).Row - 1
  5. arr = Sheet1.Range("a2").Resize(k, 2)
  6. For i = 1 To UBound(arr)
  7.     If InStr(arr(i, 1), Me.Range("b" & Target.Row)) > 0 Then
  8.         j = j + 1
  9.         ReDim Preserve crr(1 To j)
  10.         crr(j) = arr(i, 1)
  11.     End If
  12. Next
  13. Sheet2.Range("b" & Target.Row).Validation.Delete
  14. Sheet2.Range("b" & Target.Row).Validation.Add Type:=xlValidateList, Formula1:=Join(crr, ",")
  15. Sheet2.Range("b" & Target.Row).Validation.ShowError = False
  16. End Sub
  17. Sub DD()
  18. Dim arr(), crr()
  19. k = Sheet1.Range("a1048576").End(3).Row - 1
  20. arr = Sheet1.Range("a2").Resize(k, 2)
  21. ReDim crr(1 To k)
  22. For i = 1 To UBound(arr)
  23.     crr(i) = arr(i, 1)
  24. Next
  25. On Error Resume Next
  26. Sheet2.Range("b3").Resize(15, 1).Validation.Delete
  27. Sheet2.Range("b3").Resize(15, 1).Validation.Add Type:=xlValidateList, Formula1:=Join(crr, ",")
  28. Sheet2.Range("b3").Resize(15, 1).Validation.ShowError = False
  29. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2017-10-3 21:18 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-10-4 20:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
7年的老帖,历久弥新。

TA的精华主题

TA的得分主题

发表于 2018-10-29 13:38 | 显示全部楼层
大神你好,我参照@gdfcx的步骤实现了我要求的功能,但是由于我的数据库里的产品是英文表示的,好像不能区分大小写,不知道这一点能不能改进?

TA的精华主题

TA的得分主题

发表于 2018-10-29 16:19 | 显示全部楼层
@gdfcx ,大神你好,我看了您的步骤再针对我的要求做了改进,改的只有一个函数,但是效果却更改了,我觉得我的改进可以实现英文字母大小写区分的问题,个人觉得也是很有价值的,希望楼主大神看在我实现了这个功能的基础上给我加一下分,给我一下动力,谢谢大神。
具体的改变在这里:=INDEX(A:A,SMALL(IF(ISNUMBER(SEARCH(INDIRECT(CELL("address")),A$2:A$86)),ROW($2:$86),4^8),ROW(A1)))&""
我把其中的find改成了search。
我看到网上有很多的人在问怎么实现英文大小写区分的问题,我想我的这个公式应该是已经实现了,而且不是通过vba实现的。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 22:19 , Processed in 0.042440 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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