ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 自定义函数--提取单元格内多个被分开的数字

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-10 22:08 | 显示全部楼层
本帖最后由 YZC51 于 2020-3-11 16:43 编辑

'返回最后非空数据和单元格地址
Function 查找行列(sr, rg As Range, Optional x As Integer)
'‘Function 查找行列(sr As Range, rg As Range, Optional x = 0)
    Dim y   '0、默认,查找行列;1、查找列;2、查找行;3、查找列序号
    Set y = rg.Find(sr)
    c = y.Column
    r = y.Row
    查找行列 = Choose(x + 1, Chr(c + 64) & r, Chr(c + 64), r, c)
End Function

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-3-10 22:22 | 显示全部楼层
YZC51 发表于 2020-3-7 20:03
Function 查找行列(sr As Range, rg As Range, Optional x = 0)
    Dim y   '0、默认,查找行列;1、查找 ...

老师:发现您编写的自定义函数第一、二参数大多被设置成sr As Range和rg As Range,它们的确切含义是什么?现在的百度搜索总是驴头不对马嘴,其解释让人一头雾水,比如:

Function 查找行列(sr As Range, rg As Range, Optional x = 0)
    Dim y   '0、默认,查找行列;1、查找列;2、查找行;3、查找列序号
    Set y = rg.Find(what:=sr)
    c = y.Column
    r = y.Row
    查找行列 = Choose(x + 1, Chr(c + 64) & r, Chr(c + 64), r, c)
End Function
第一参数sr As Range代表什么,第二参数rg As Range又代表什么?您可以用注释的办法列出参数的语法,如:

image.png

这样就好理解了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-10 22:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
WYS67 发表于 2020-3-10 22:22
老师:发现您编写的自定义函数第一、二参数大多被设置成sr As Range和rg As Range,它们的确切含义是什么 ...

第一参数sr As Range代表什么
答:需要查找的字符

第二参数rg As Range又代表什么?
答:被查找的区域

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-10 23:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
自定义函数第一、二参数大多被设置成sr As Range和rg As Range

答:只是习惯这么写!

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-3-10 23:05 | 显示全部楼层
YZC51 发表于 2020-3-10 22:58
第一参数sr As Range代表什么
答:需要查找的字符

第一参数sr As Range代表什么
答:需要查找的字符

第二参数rg As Range又代表什么?
答:被查找的区域
您的解释清楚明了,谢谢老师!

看看百度知道是怎么说的?看得一头雾水。

1.gif

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-10 23:45 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-3-11 16:09 | 显示全部楼层
YZC51 发表于 2020-3-7 20:03
Function 查找行列(sr As Range, rg As Range, Optional x = 0)
    Dim y   '0、默认,查找行列;1、查找 ...

这个函数好!

TA的精华主题

TA的得分主题

发表于 2020-3-11 17:07 | 显示全部楼层
YZC51 发表于 2020-3-7 20:03
Function 查找行列(sr, rg As Range, Optional x As Integer)
'‘Function 查找行列(sr As Range, rg As R ...

1.gif

查找内容.zip (14.26 KB, 下载次数: 9)

老师:如果修改第三参数为查找顺序,功能就强大多了

当第三参数:指定为1时,代表自上而下、自左而右第一次出现的单元格地址;2时,代表自上而下、自左而右第二次出现时的地址…...
                   指定为-1时,代表自下而上、自右而左第一次出现的单元格地址;3时,代表自下而上、自右而左第二次出现时的地址…...
注意:当查找不到指定字符时,则显示空白

公式举例:
=查找行列($C$5,$A$5:$A$100,1)  返回结果A11;
=查找行列($C$5,$A$5:$A$100,2)  返回结果A16;
=查找行列($C$5,$A$5:$A$100,3)  返回结果A29;
=查找行列($C$5,$A$5:$A$100,4) 因为没有对应的第4个字符,所以返回结果为空白!
同理:
=查找行列($C$5,$A$5:$A$100,-1)  返回结果A29;
=查找行列($C$5,$A$5:$A$100,-2)  返回结果A16;
=查找行列($C$5,$A$5:$A$100,-3)  返回结果A11;
=查找行列($C$5,$A$5:$A$100,-4) 因为没有对应的第4个字符,所以返回结果为空白!


TA的精华主题

TA的得分主题

发表于 2020-3-11 19:42 | 显示全部楼层
本帖最后由 WYS67 于 2020-3-11 21:42 编辑
YZC51 发表于 2020-3-7 20:03
Function 查找行列(sr, rg As Range, Optional x As Integer)
'‘Function 查找行列(sr As Range, rg As R ...
1.gif
老师:既然是查找,就会存在3种可能:

1.找不到符合条件的数据,结果返回空白,代表找不到对应数据;

2.有两个或两个以上符合条件的数据;

3.刚好有一个符合条件的数据。

您写的查找行列的自定义函数,只有在发生第三种情况时可以准确定位,如若发生第一种情况则显示#VALUE!错误;发生第二种情况,只能显示第一次出现时的地址。所以没有
388楼的运算规则所具备的功能强大和实用。

您也可以保持原有的所有功能,而把把原有的388楼的运算规则增加成第四参数继续使用【比较而言,把原有的第三参数修改为第四参数更合适】,那样会更强大!

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-12 06:24 | 显示全部楼层
WYS67 发表于 2020-3-11 19:42
老师:既然是查找,就会存在3种可能:

1.找不到符合条件的数据,结果返回空白,代表找不到对应数据;
...

抱歉!近来琐事缠身,以后吧!

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-12-26 02:24 , Processed in 0.046482 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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