ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-13 17:28 | 显示全部楼层
lss001 发表于 2018-10-13 16:53
您这附件不是更新附件,应以上次最后更新附件为妥!!!
Function DQYL(qu As Range, tq As Range, Option ...

这个不是区域数组公式,是普通公式输入格式吧?

TA的精华主题

TA的得分主题

发表于 2018-10-13 17:44 来自手机 | 显示全部楼层
本帖最后由 lss001 于 2018-10-14 09:29 编辑

上楼代码为普通公式!

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-13 18:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lss001 发表于 2018-10-13 17:44
附件中代码是第一次写的,并不是别人改的,
应以最后为准,并不是不允许别人改代码!
如果速度能提高,运 ...

非常钦佩老师的高风亮节!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-14 00:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lss001 发表于 2018-10-13 16:53
您这附件不是更新附件,应以上次最后更新附件为妥!!!
Function DQYL(qu As Range, tq As Range, Option ...

老师:您28楼写的代码,当数据源所在列为I列时,P5:Q9的计算结果都正确;                                   当数据源所在列为K列时,Q14:Q18求行号间隔的计算结果正确;但P14:P18求E列序号间隔的计算结果错误,正确的结果在R14:R18.



无论数据源在那一列【I列或K列或其他任意列】,都是用K1的数字,减去指定数据【O列】最后一次出现在该数据源列对应于序号E列同行的数字。请老师照此修改代码。

   创建求指定数据当前间隔的自定义函数.zip (24.5 KB, 下载次数: 2)       

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-14 01:47 | 显示全部楼层
本帖最后由 WYS67 于 2018-10-14 02:48 编辑
lss001 发表于 2018-10-13 17:44
附件中代码是第一次写的,并不是别人改的,
应以最后为准,并不是不允许别人改代码!
如果速度能提高,运 ...

34楼附件里不同列标的求序号间隔的公式如下:

I列当前序号间隔的函数公式:P5     { =$K$1-INDIRECT("E"&MATCH(1,0/($I$1:$I$100000&""=$O5&"")))  ,下拉至P9;

L列当前序号间隔的函数公式:P14     { =$K$1-INDIRECT("E"&MATCH(1,0/($K$1:$K$100000&""=$O14&"")))
附件R5:R9是I列数据的当前序号间隔,R14:R18是K列数据的当前序号间隔。 创建求指定数据当前间隔的自定义函数.zip (25 KB, 下载次数: 3)

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-14 08:32 | 显示全部楼层
lss001 发表于 2018-10-13 17:44
附件中代码是第一次写的,并不是别人改的,
应以最后为准,并不是不允许别人改代码!
如果速度能提高,运 ...

老师:麻烦您看一下34、35楼的公式。据此修改求当前序号间隔的代码。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-14 09:05 | 显示全部楼层
lss001 发表于 2018-10-13 17:44
附件中代码是第一次写的,并不是别人改的,
应以最后为准,并不是不允许别人改代码!
如果速度能提高,运 ...

老师:1.求序号当前间隔时,数据源在哪个工作表里,就必须用那个工作表E列的序号。如:  在本工作表里I列当前序号间隔的函数公式:P5     { =$K$1-INDIRECT("E"&MATCH(1,0/($I$1:$I$100000&""=$O5&"")))  ,下拉至P9;

如果需要在本表里计算《总表》I列的当前序号间隔,则上面的公式必须变为:
   P5     { =$K$1-INDIRECT("总表!E"&MATCH(1,0/(总表!$I$1:$I$100000&""=$O5&"")))  ,下拉至P9;

  2.如果是在本工作表里求K列当前序号间隔的函数公式:P14     { =$K$1-INDIRECT("E"&MATCH(1,0/($K$1:$K$100000&""=$O5&"")))  ,下拉至P9;
但如果需要在本表里计算《总表》K列的当前序号间隔,则上面的公式必须变为:
   P14     { =$K$1-INDIRECT("总表!E"&MATCH(1,0/(总表!$K$1:$K$100000&""=$O5&"")))  ,下拉至P9;

只有这样,才能得出始终正确的计算结果。

需要计算哪个工作表里任意列的当前序号间隔,就必须同步调用相应工作表里的E列序号才能得出正确结果!

TA的精华主题

TA的得分主题

发表于 2018-10-14 09:17 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 lss001 于 2018-10-14 09:31 编辑

楼上已经更正代码!

评分

1

查看全部评分

TA的精华主题

TA的得分主题

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

已测试。这次完全正确!谢谢老师!

TA的精华主题

TA的得分主题

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

老师:有空看看http://club.excelhome.net/thread-1440305-1-1.html ,参照8楼山菊花总版主写的过程,修改成自定义函数【使用方便】。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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