ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创]试定义多层次可模糊查找的下拉列表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2004-11-11 15:46 | 显示全部楼层
看来这个版块,我还是看不了,还是先看基础吧,慢慢来没办法

TA的精华主题

TA的得分主题

发表于 2004-11-11 18:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

简化后公式: =NOT(ISNA(MATCH("*"&查找项&"*",OFFSET(资料表!$A$1,ROW()-1,0,,256),0)))+MAX(OFFSET($B$1,0,0,ROW()-1))

1、就公式而言:Not(Isna())段可以直接用Isnumber()就可以了,Max()段不用Max(Offset()),而用Max($B$1:$B1)来代替即可。 2、你的Match()段的目的不就是用通配符来查找“查找项”是否存在吗?没有必要用Offset()的,直接用相对引用就可以了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-11-11 20:51 | 显示全部楼层
以下是引用gdliyy在2004-11-11 18:08:00的发言:

简化后公式: =NOT(ISNA(MATCH("*"&查找项&"*",OFFSET(资料表!$A$1,ROW()-1,0,,256),0)))+MAX(OFFSET($B$1,0,0,ROW()-1))

1、就公式而言:Not(Isna())段可以直接用Isnumber()就可以了,Max()段不用Max(Offset()),而用Max($B$1:$B1)来代替即可。 2、你的Match()段的目的不就是用通配符来查找“查找项”是否存在吗?没有必要用Offset()的,直接用相对引用就可以了。

1、是啊,直接用isnumber()就可以了,谢谢版主提醒。

2、版主可能没注意到,在实际应用过程中,由于资料表经常要删除和插入,如果直接引用,在这两种情况下会发生引用错误,需要常常修改公式。用offset由于没有直接引用,当资料表发生前述变动时,就不会发生引用错误。这样辅助表就可以保护或隐藏起来,当其不存在了,就像没有用到辅助列一样,没有累赘。不知版主是否同意这种观点。

其实在最初,偶同事希望的是实现模糊查找客户,由于一时想不出更好的法子,所以用业务员来筛选过滤,减少客户的条目。后来经版主多次提醒和改进,突然想到了解决方案。

所以再次感谢版主。不但让偶学到了不少函数方面的新知识,还拓宽了偶的解题思路。很喜欢向版主兄弟讨教问题。这种步步深入,化繁为简的感觉真好!如果版主觉得偶可教的话,还请日后多多关照!作为回报,偶会话更多的时间和精力帮助论坛上偶能帮的上的朋友的! [em17][em17][em17][em24][em23]

TA的精华主题

TA的得分主题

发表于 2004-11-12 21:30 | 显示全部楼层

如果能看懂并能好好消化这个主题的所有帖子,其函数功力必能大增。因为以上内容涉及到excel的很多知识点和解题思路。

我已将此贴收藏,以便经常拿出来研究一番。

TA的精华主题

TA的得分主题

发表于 2004-11-19 22:42 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2004-11-23 15:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

学了就用,但数字字段不能查询!

Qnpiu4Xf.rar (227.75 KB, 下载次数: 202)

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-11-23 16:10 | 显示全部楼层

楼上很棒![em17][em17][em17]

学了就用,但数字字段不能查询!

这个只能用来查文本,因为模糊查询需要通配符,countif和match都对数据类型敏感。

TA的精华主题

TA的得分主题

发表于 2004-12-3 14:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

请教版主

(MATCH(B2,B:B,0)=ROW())+MAX($C$1:C1)

上面这句起什么作用?

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-12-3 14:51 | 显示全部楼层
以下是引用liuyuanbei在2004-12-3 14:37:00的发言:

请教版主

(MATCH(B2,B:B,0)=ROW())+MAX($C$1:C1)

上面这句起什么作用?

MATCH(B2,B:B,0)=ROW(),因为match是找到数组中第一个符合条件,我们取不重复值只需一个,所以当row()行号=match找的行是,就把让他为true,否则为false

true+n=N+1

false+N=N

MAX($C$1:C1)取出本行前所有数值的最大数值

综合起来(MATCH(B2,B:B,0)=ROW())+MAX($C$1:C1) 就是统计当前行为止不重复值得个数

当然这个公式还能扩展为满足某条件时的不重复值个数比如

(MATCH(B2,B:B,0)=ROW())*isnumber(b2)+MAX($C$1:C1)

就是只取是不重复的数值

(MATCH(B2,B:B,0)=ROW())*(len(b2)>3)+MAX($C$1:C1)

就是只取是不重复的长度大于3的字符串

[此贴子已经被作者于2004-12-4 12:44:50编辑过]

TA的精华主题

TA的得分主题

发表于 2004-12-3 18:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

请教楼主:多个单元格怎样实现下拉列表

我想做一个收付存的系统,但输入界面的问题一直困扰着我,现在我发一个简单的例子过来,请楼主帮我解决一下!

谢谢!!!

TkHX7csf.rar (2.49 KB, 下载次数: 111)
[此贴子已经被作者于2004-12-3 18:32:51编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-6-17 05:15 , Processed in 0.046673 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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