ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] yjh自定义函数

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-11-23 10:36 | 显示全部楼层 |阅读模式
本帖最后由 yjh_27 于 2019-11-24 17:13 编辑

记录自编、改编的自定义函数,方便查找

万能取有数据最后行号自定义函数(VBA专用)
http://club.excelhome.net/thread-1459073-1-1.html
(出处: ExcelHome技术论坛)

'得到有数据的最后(最前)行列号,三个参数均可选
    '参数形式如:MyRange     指定范围,如果忽略则为UsedRange
    '                "A:B"     整列
    '                "6:26"    整行
    '                "a6:h26"  矩形区域
    '                "-1"      负数,函数范围caller
    '                ""        UsedRange
    '            MySht       指工作表名,如果忽略则为活动工作表
    '                        在工作表中使用且MySht=活动工作表时,会引起循环引用,需设置手动计算Application.Calculation = xlManual或启用迭代计算Application.Iteration = True
    '            mode        返回模式,
    '                >0        1~9最大行(行扫描优先),>9最大列(列扫描优先)
    '                <0        -1~-9最小行(行扫描优先),<-9最小列(列扫描优先)
    '                1         最大行号
    '                2         最大行号对应最后列号
    '                3         最大行号对应最后列字母
    '                4         "最大行号,对应最后列号"
    '                5         最大行最后列绝对地址
    '                6         最大行最后列相对地址(默认)
    '                7         "最大行号,最大列号"
    '                8         最大行列绝对地址
    '                9         最大行列相对地址
    '                11         最大列号最前行号
    '                12         最大列号
    '                13         最大列字母
    '                14         "对应最前行号,最大列号"
    '                15         最大列对应最前行绝对地址
    '                16         最大列对应最前行相对地址
    '                17         "最大行号,最大列号"
    '                18         最大行列绝对地址
    '                19         最大行列相对地址
    '                -1         最小行号
    '                -2         最小行号对应最前列号
    '                -3         最小行号对应最前列字母
    '                -4         "最小行号,对应最前列号"
    '                -5         最小行对应最前列绝对地址
    '                -6         最小行对应最前列相对地址
    '                -7         "最小行号,最小列号"
    '                -8         最小行列绝对地址
    '                -9         最小行列相对地址
    '                -11         最小列号最前行号
    '                -12         最小列号
    '                -13         最小列字母
    '                -14         "对应最前行号,最小列号"
    '                -15         最小列对应最前行绝对地址
    '                -16         最小列对应最前行相对地址
    '                -17         "最小行号,最小列号"
    '                -18         最小行列绝对地址
    '                -19         最小行列相对地址


补充内容 (2020-3-13 19:28):
下26L附件
http://club.excelhome.net/forum. ... DM2MjIzM3wxNTA5NDE1

最大使用行列号_自定义函数.rar

18.51 KB, 下载次数: 51

最大最小使用行列号_自定义函数.rar

24.54 KB, 下载次数: 83

有更新

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-11-23 15:45 | 显示全部楼层
功能很强大!感谢老师!!!

TA的精华主题

TA的得分主题

发表于 2019-11-24 02:44 | 显示全部楼层
1.gif

返回有数据的最大行列号.zip (19.2 KB, 下载次数: 16)

老师:B13:C28中,当第三参数大于5时,其计算结果就会出现周而复始的循环现象,为使代码更严谨,似乎应该设置--当第三参数大于5时,1.显示空白;2.指定5时那样,始终显示最后绝对地址。比较而言,我觉得还是显示空白恰当些

Function EndRC(Optional MyRange As String, Optional MySht As String, Optional mode = 0)
    '得到有数据的最后行号,两个参数均可选
    '参数形式如:MyRange     指定范围,如果忽略则为UsedRange
    '                "A:B"     整列
    '                "6:26"    整行
    '                "a6:h26"  矩形区域
    '                ""        UsedRange
    '            MySht       指工作表名,如果忽略则为活动工作表
    '                        在工作表中使用且MySht=活动工作表时,会引起循环引用,需设置手动计算Application.Calculation = xlManual或启用迭代计算Application.Iteration = True
    '            mode        返回模式,0~9最大行(行扫描优先),>9最大列(列扫描优先)
    '                0         最后相对地址
    '                1         最后行号
    '                2         最后列号
    '                3         最后列字母
    '                4         "最后行号,最后列号"
    '                5         最后绝对地址
    Dim rng As Range, sht As Worksheet, ar, i As Long, j As Long
    If MySht <> "" Then Set sht = Sheets(1) Else Set sht = ActiveSheet
    If MyRange = "" Then Set rng = sht.UsedRange Else Set rng = Intersect(sht.UsedRange, sht.Range(MyRange))
    If Not rng Is Nothing Then
        ar = rng.Value
        If Not IsArray(ar) Then
            If Len(ar) > 0 Then EndR = rng.Row: EndC = rng.Column
        ElseIf mode < 10 Then
            For i = UBound(ar) To 1 Step -1
                For j = UBound(ar, 2) To 1 Step -1
                    If Len(ar(i, j)) Then
                        EndR = i - 1 + rng.Row
                        EndC = j - 1 + rng.Column
                        i = 1
                        Exit For
                    End If
                Next
            Next
        Else
            For j = UBound(ar, 2) To 1 Step -1
                For i = UBound(ar) To 1 Step -1
                    If Len(ar(i, j)) Then
                        EndR = i - 1 + rng.Row
                        EndC = j - 1 + rng.Column
                        j = 1
                        Exit For
                    End If
                Next
            Next
            mode = mode Mod 10
        End If
        If mode = 1 Then
            EndRC = EndR
        ElseIf mode = 2 Then
            EndRC = EndC
        ElseIf mode = 3 Then
            EndRC = Split(Cells(EndR, EndC).Address, "$")(1)
        ElseIf mode = 4 Then
            EndRC = EndR & "," & EndC
        ElseIf mode = 5 Then
            EndRC = Cells(EndR, EndC).Address
        Else
            EndRC = Cells(EndR, EndC).Address(0, 0)
        End If

TA的精华主题

TA的得分主题

发表于 2019-11-24 05:56 | 显示全部楼层

1.gif
老师:这个函数给人怪怪的感觉--想把Visual Basic里的ENDRC代码复制粘贴在E5以下的区域,按说应该全部覆盖E5:E66,并显示代码,可是自E23以下却看不见代码,点击E24以下的任何空白的行,都只是在编辑栏里显示  End Function【最后一句代码】,这是怎么回事啊?

返回有数据的最大行列号.zip (19.49 KB, 下载次数: 16)

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-15 19:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
按指定单元格颜色求和,按行、按列、按区域任意。

每行和每列黄色区域的和
http://club.excelhome.net/thread-1516065-1-1.html
(出处: ExcelHome技术论坛)

指定单元格颜色求和_自定义函数.rar

21.22 KB, 下载次数: 52

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-2-16 11:44 | 显示全部楼层
yjh_27 发表于 2020-2-15 19:54
按指定单元格颜色求和,按行、按列、按区域任意。

每行和每列黄色区域的和

收藏了,感谢老师!

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-22 14:59 | 显示全部楼层
本帖最后由 yjh_27 于 2020-3-13 15:11 编辑

随机自定义函数

随机数字
http://club.excelhome.net/thread-1522210-1-1.html
(出处: ExcelHome技术论坛)

小女子感谢一把小刀闯天下老师的秒杀,本帖结题了!怎样从一个数组中随机抽出40个
http://club.excelhome.net/thread-1449061-1-1.html



这段代码运行时提示过程太大,请问如何精简?
http://club.excelhome.net/thread-1525612-1-1.html
(出处: ExcelHome技术论坛)


随机n个元素取m个元素_自定义函数.rar

43.02 KB, 下载次数: 28

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-22 15:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
数据多对多组合问题,求高手指点!
http://club.excelhome.net/thread-1521429-1-1.html
(出处: ExcelHome技术论坛)

内含:组合、排序(返回排序索引)、双向凑数  自定义函数

工作簿11.rar

78.34 KB, 下载次数: 25

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-2-24 19:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
,mark一下,不能加好友只能这样了

TA的精华主题

TA的得分主题

发表于 2020-2-24 19:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主提供分享是好东西谢谢分享!!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-1 20:09 , Processed in 0.049683 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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