ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 时间段组的矢量运算,自定义函数的思路~

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-22 15:31 | 显示全部楼层
香川群子 发表于 2013-1-22 15:06
其它几个时间函数的代码也编写好了。

因为我的电脑是日文环境,所以中文字符直接用了汉字双字节码输出。 ...

爽~!!!有现成的了!貌似1440的方式读起来容易理解点,我的脑袋瓜勉强能读懂~感谢~

TA的精华主题

TA的得分主题

发表于 2013-1-22 15:35 | 显示全部楼层
lee1892 发表于 2013-1-22 13:41
这不是好不好的问题吧,你那个办法是偷换概念嘛~

对比,也就是一个循环嵌套的事,又不麻烦。倒是排序啰 ...

另外,我在时间段叠加算法基础上,扩展而成为时间段扣减、时间交集计算,都是很简单就做到了。

那么你如果要实现后面的几个算法,代码都是要重新写过,没有办法通用的。

呵呵。简单的不做,非要做复杂的,不是好的程序设计者。

TA的精华主题

TA的得分主题

发表于 2013-1-22 15:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
whatyang 发表于 2013-1-22 14:34
非常感谢,让我的问题有了一种新的选择~

研究研究!!!

嗯。

相比之下,我的代码没有研究价值。因为算法太简单了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-22 15:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 whatyang 于 2013-1-22 15:41 编辑

ChrW(38169) & ChrW(35823) & ChrW(65292) & ChrW(26410) & ChrW(23436) & ChrW(20840) & ChrW(21253) & ChrW(21547) & ChrW(65281)
错误,未完全包含!

ChrW(23436) & ChrW(20840) & ChrW(21253) & ChrW(21547)
完全包含

{:soso_e114:}看的汗泠泠的~哈哈~~~

TA的精华主题

TA的得分主题

发表于 2013-1-22 15:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
whatyang 发表于 2013-1-22 15:41
ChrW(38169) & ChrW(35823) & ChrW(65292) & ChrW(26410) & ChrW(23436) & ChrW(20840) & ChrW(21253) & Ch ...

コードの中に中国語の簡略漢字をそのまま使うと、化け文字になって判読できませんよ。

しようがありません。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-22 15:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
香川群子 发表于 2013-1-22 15:37
嗯。

相比之下,我的代码没有研究价值。因为算法太简单了。

不过话说回来,1440的算法我能看的懂~

——这里有个好奇,2种算法的计算耗时如何
——在我工作实际运用中,每个人每天需要使用这系列函数的(加、减)算出应该在班的时间(大约10次),然后再与系统导出的实际在班的工时求交集(1次),然后是  交集的时间差额/应该在班的时间段组的时间差额*100%,称为 执行率,用以衡量员工是否按要求在指定时间内上班的效率
——哦,一个部门500人(一共6个部门,不过是分开算的),也就是说上面的每个人的操作*500次/天
——估计要点时间吧——我打算做个进度条,以免别人以为死机了~

TA的精华主题

TA的得分主题

发表于 2013-1-22 15:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 lee1892 于 2013-1-23 10:07 编辑
香川群子 发表于 2013-1-22 15:19
你的代码显然复杂过头了。

我的代码算法 简单容易懂,代码结构 简单清晰,维护、扩展方便。

觉得复杂是因为直接用代码进行二维排序,这个工作也可以在 Excel 里完成呀,真正的 Merge 的核心不就是 一个循环嵌套吗。
Subtract 和 Intersect 无非就是改 Merge 一个数组的前后比较为两个数组间比较,还是一个简单的循环嵌套。

我又没说你的想法不好,应付特殊问题当然特殊对待。只是想说明写个对连续的也适用的并不麻烦。

TA的精华主题

TA的得分主题

发表于 2013-1-22 16:23 | 显示全部楼层
whatyang 发表于 2013-1-22 15:50
不过话说回来,1440的算法我能看的懂~

——这里有个好奇,2种算法的计算耗时如何

速度不用担心。

数组内for……next循环,即使几百万次也不会超过1秒。

而现在的计算量也就是1440次等级。绝对是毫秒级别的。


TA的精华主题

TA的得分主题

发表于 2013-1-22 16:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
刚才测试了一下,自动连续运算1000次耗时1秒。→ 即代码计算每次耗时不到千分之一秒。


lee1892的代码确实计算效率要高的多,连续运算1000次耗时0.5秒不到。



我的代码算法是遍历笨办法,不考虑速度。

实际应用时,光是【人工选择时间段数组区域】的耗时就大约要5-8秒,
这个是代码计算每次耗时不到千分之一秒的几千到1万倍了。

所以,代码计算过程的速度不用优化,足够了。



TA的精华主题

TA的得分主题

发表于 2013-1-22 16:44 | 显示全部楼层
lee1892 发表于 2013-1-22 15:54
觉得复杂是因为直接用代码进行二维排序,这个工作也可以在 Excel 里完成呀,真正的 Merge 的核心不就是 一 ...

后面的问题需要考虑相邻端点问题。

不是一下子就可以解决的。

尤其是,减法和交集的计算原理不同,无法套用你的加法函数。

这个你不要轻描淡写。不是一回事。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 17:52 , Processed in 0.044257 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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