ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 创建求当前间隔的自定义函数

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-14 12:45 | 显示全部楼层
本帖最后由 WYS67 于 2018-10-14 14:01 编辑
lss001 发表于 2018-10-13 17:44
上楼代码为普通公式!

感觉还是自定义函数用起来方便。过程就像新科技产品,功能很全,就是驾驶员手生,老出现这样那样的问题,还不知道怎样解决?比如您前两天写的《按J1指定更新》的代码,用了几天都没有问题,运算速度也很快!刚才,我把这两天的快三彩号数据更新一下,在《00 总表》的I列添加了这两天的数据,点击按钮后出现下面错误: 20181014123155.png 20181014123211.png
换了几个,都是一样的问题--编译错误,标签未定义--头都大了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-14 14:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lss001 发表于 2018-10-13 17:44
上楼代码为普通公式!

老师:http://club.excelhome.net/forum. ... 843&pid=9687178 41楼的错误怎么解决?

TA的精华主题

TA的得分主题

发表于 2018-10-14 14:51 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
WYS67 发表于 2018-10-14 12:45
感觉还是自定义函数用起来方便。过程就像新科技产品,功能很全,就是驾驶员手生,老出现这样那样的问题, ...

上次去掉→t:←有误

把最后一个Next
改为→t:     Next

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-14 15:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lss001 发表于 2018-10-14 14:51
上次去掉→t:←有误

把最后一个Next

谢谢!还真是因为它!加上后又能更新了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-16 19:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 WYS67 于 2018-10-16 20:05 编辑


--------

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-14 15:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 WYS67 于 2018-11-14 15:42 编辑
lss001 发表于 2018-10-13 16:53
Function DQYL(qu As Range, tq As Range, Optional tj = "")
    Set x = qu.Worksheet.Rows("4:4").Find ...

20181114144032.png 20181114144132.png

老师:28楼自定义函数的代码有点问题--如《按J1指定更新不同工作簿内的分表》中,【00 总表】的J1指定为3,当点击K2处的“更新分表”后,【1 组三】的AE5:AE34和AP5:AP34都是自定义函数(AE列是DPBCF,AP列是DQYL),为什么AE列的DPBCF能够显示正确的计算结果,而AP列的当前遗漏却显示#VALUE!错误?必须要在AE5的公式后面点击“确定”后,才会显示正确结果

按JI指定更新不同工作簿内的分表 lss001.zip (1.58 MB, 下载次数: 3)
当前遗漏.zip (21.36 KB, 下载次数: 2)

恳请老师看一下问题出现在DQYL代码的哪个地方了?

请看视频演示:
Video_20181114154102.zip (1.34 MB, 下载次数: 1)


TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-14 15:46 | 显示全部楼层
lss001 发表于 2018-10-13 16:53
Function DQYL(qu As Range, tq As Range, Optional tj = "")
    Set x = qu.Worksheet.Rows("4:4").Find ...

请看46楼【1 组三】里AP列的视频演示:

Video_20181114154102.zip (1.34 MB, 下载次数: 0)


TA的精华主题

TA的得分主题

发表于 2018-11-14 15:58 来自手机 | 显示全部楼层
WYS67 发表于 2018-11-14 15:08
老师:28楼自定义函数的代码有点问题--如《按J1指定更新不同工作簿内的分表》中,【00 总表】的J1指 ...

这是因为DQYL函数不是易失性函数!
既然要实时更新只须声明为易失性函数即可!
方法:在DQYL函数中(一般第二行)加入
→Application.Volatile

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-11-14 16:19 | 显示全部楼层
lss001 发表于 2018-11-14 15:58
这是因为DQYL函数不是易失性函数!
既然要实时更新只须声明为易失性函数即可!
方法:在DQYL函数中(一般 ...

还真是这个问题引发的!在第二行加上 Application.Volatile  后,问题已圆满解决!谢谢老师了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-4-8 23:48 | 显示全部楼层
lss001 发表于 2018-10-13 16:53
Function DQYL(qu As Range, tq As Range, Optional tj = "")
    Set x = qu.Worksheet.Rows("4:4").Find ...

1.gif

32 当前遗漏及分区公式.zip (116.73 KB, 下载次数: 0)

老师:《当前遗漏举例》的P:Q列是用您28楼自定义函数输入的公式,计算结果完全正确!只是第二参数【指定数据】只能输入单值,遇到类似N5:N60那样,指定条件为多值的情况,只能通过输入普通公式下拉来完成,如果指定条件很多时,运算速度就会降低很多!

能不能在全盘保留原代码计算功能的基础上,当需要计算的条件数据很多时,增加第二参数可以为指定条件区域,输入为区域数组公式,如选定P5:P60,输入区域数组公式 { =DQYL($I$5:$I$10252,$N5:$N60);选定Q5:Q60,输入区域数组公式 { =DQYL($I$5:$I$10252,$N5:$N60,1001),即可显示如P5:Q60的计算结果。这样可以大大提高公式计算速度!

附:原代码如下--

Function DQYL(qu As Range, tq As Range, Optional tj = "")
    Application.Volatile
    Set x = qu.Worksheet.Rows("4:4").Find(What:="序号", LookAt:=xlPart)
    br = Range(qu.Worksheet.Cells(5, x.Column), qu.Worksheet.Cells(qu.Count + 4, x.Column))
    ar = qu
    For k = UBound(ar) To 1 Step -1
        If ar(k, 1) <> "" Then Exit For
    Next
    For i = k To 1 Step -1
        t = t + 1
        If tj = "" Then DQYL = t Else DQYL = tj - br(i, 1)
        If ar(i, 1) = CLng(tq) Then Exit For
    Next
End Function


麻烦老师让第二参数指定为单值时,仍然执行上面代码的计算功能;指定为条件区域【即多值计算】时,采取区域数组公式输入方式

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

本版积分规则

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

GMT+8, 2025-1-15 20:53 , Processed in 0.047803 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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