ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 重新编写自定义函数冷码和冷号的代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-10-7 11:44 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 WYS67 于 2018-10-7 16:22 编辑

下面是别人为我写的自定义函数LENGMA和LENGHAO。公式的计算结果虽然正确,但运行速度慢得要死,才4万多行数据,就爬不动了。想麻烦老师们再重新创建一个区域数组公式输入的LENGMA公式。

冷码和冷号.zip (532.84 KB, 下载次数: 54)


详细定义和规则在5楼里。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-7 13:45 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-10-7 14:44 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-7 15:42 | 显示全部楼层
本帖最后由 WYS67 于 2018-10-7 16:52 编辑
lss001 发表于 2018-10-7 14:35
以下两码→
Function LENGMA(rng As Range)
    Dim a, b, c, d, i, k, x, y, ar, br

老师把冷码和冷号代码合二为一,令我茅塞顿开。当时先有冷号,随后才又需要两位数冷号,请人又写了冷码代码,其实是一种规则,完全可以合二为一,只不过必须得按十位、个位分别查询罢了!


温码、冷码的定义是:       0、1、2中,数据源B列十位上的出现次序肯定有先有后,根据0、1、2三个数,最后一次出现在不同行号里,所居十、个位的先后顺序规定:最靠下的那个数字为热码,稍微靠上的为温码,最上边的那个则为冷码
                    举例:如果自B5开始到当前行号,十、个位分开查看,出现的数字都相同【即同一个数字】,则不存在温码、冷码;如果只出现了两个不同数字,则靠下边那个为热码,靠上边那个为温码,仍然没有冷码【如查询冷码,结果为空白】

              
     运算规则是:1.如果只有十位上有温码、冷码而个位上没有,或只有个位上有温码、冷码而十位上没有,计算结果屏蔽为空白【不符合冷码定义】;
                        2.一旦开始显示的温码、冷码结果,则直到最后一行,中间不会有空白【除非出现同行数据源为空白的情况下】,因为从中间任何一行向上推,都有热码、温码和冷码之分。



   看了您写的合二为一的代码,我有一个想法:给函数增加一个选择参数。具体是这样:
1.函数用途:温冷码查询。
2.函数名称:WEN.LENG(数据区域,1【或2】)   ,第二参数为1时,为显示稍微靠上的温码;第二参数为2时,则显示最上边的冷码
3.公式举例说明  :温码--选定C5:C100000区域,输入区域数组公式 =WEN.LENG(B5:B100000,1)

冷码--选定C5:C100000区域,输入区域数组公式 =WEN.LENG(B5:B100000,2)
4.公式类型:区域数组公式


冷码和冷号.zip (532.84 KB, 下载次数: 21)

请老师按照上边温码、冷码定义,和要求,重新编写两用【温码、冷码】和多位【一位数、两位数】的综合代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-7 16:22 | 显示全部楼层

TA的精华主题

TA的得分主题

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

恳请老师们帮忙!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-7 17:34 | 显示全部楼层
lss001 发表于 2018-10-7 14:35
以下两码→
Function LENGMA(rng As Range)
    Dim a, b, c, d, i, k, x, y, ar, br

老师:您写的两个代码没有达到我需要的要求。详细的函数定义和规则在5楼里重新表述和更正了,恳请您按照5楼的函数定义和规则编写代码。谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-7 20:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
恳请老师们帮忙!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-7 21:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
恳请老师们帮忙!

TA的精华主题

TA的得分主题

发表于 2018-10-7 21:29 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
WYS67 发表于 2018-10-7 21:21
恳请老师们帮忙!

见楼上代码!!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-16 23:06 , Processed in 0.042860 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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