Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3346|回复: 5

VBA for动态循环求取符合条件内的最大值

[复制链接]
发表于 2019-4-17 20:34 | 显示全部楼层 |阅读模式
2学分
表中根据人名有具体的起落时间,F列为对应A列的时间底线,现在需要将对应A列的起飞时间与F列时间底线之间的所有起、落间隔休息算出来,并求取这个间隔的最大休息时间(如果A列落地时间小于F列时间节点,就按F列的底线时间来计算。)结果放置到对应E列。难点在于,需要算出F列所有时间底线内的休息间隔最大值并置于对应E了。写了很久,就只能算出一个人的范围间隔,两个人的情况下,就不会写了,不知道如何下手!

测试图片.png

测试文件.zip

7.42 KB, 下载次数: 5

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2019-4-18 09:21 | 显示全部楼层
没看懂,第8行中

30:38是怎么求的?

0:40对应的日期是2019/4/14?
回复

使用道具 举报

 楼主| 发表于 2019-4-18 16:54 | 显示全部楼层
感谢版主关注,0:40对应的时间应该是2019/4/15 0:40或者2019/4/14 24:40,表里因为格式自动切换了。即跨凌晨后的落地时间。表中第8行数据对应F列时间节点内的休息间隔最大值应该是30:38.也就是黑框内B列起飞和C列落地之间的休息最大值,其实完整的数据应该有(25:05、30:38、25:45、17:10、17:10、17:00)这几个休息时间,取了这串数据的最大一个值30:38。黑框可以理解成F列时间底线的一个范围。
回复

使用道具 举报

发表于 2019-4-18 17:19 | 显示全部楼层
25:05
这个值是怎么产生的?
回复

使用道具 举报

 楼主| 发表于 2019-4-19 09:54 | 显示全部楼层
辛苦版主,张三2019/4/14 18:40起飞,起飞时间减去2019/4/13 17:35的落地时间,既是其中的一个休息时间,是25:05,后面时间以此类推,是前一个起飞和后一个落地之间的休息时间。在张三2019/4/14 18:40起飞对应同行的F列起飞节点2019/4/8 18:40(底线)内的休息时间总计有(25:05、30:38、25:45、17:10、17:10、17:00)这么多,而满足条件的只有30:38这个最大值。关键的是,F列每个节点(底线)与之对应的同行A列起飞时间之间是一个范围,固定为144小时,需要每个节点(底线)与对应行起飞时间之间这个范围内的最大休息时间。虽然张三2019/4/14 18:40起飞前第一个休息时间是25:05,但第二个休息时间是30:38,所以取了第二个最大值。另外,张三2019/4/14 18:40对应节点(底线)是2019/4/8 18:40,该节点要比他范围内最后一个 2019/4/8 18:30落地时间大,那最后一个休息时间就按2019/4/9 11:40  -  2019/4/8 18:40(节点)而不是 2019/4/8 18:30.所以,最后一个休息时间是17:00,而不是17:10.即,最后一个落地时间前超出节点10分钟,只要超出节点范围,就按节点范围兜底来算。图片中黑框只是 2019/4/8 18:40这一个节点的范围,需要计算每个节点范围内的休息最大值,楼主,我的叙述太繁琐了,希望能看懂。
回复

使用道具 举报

发表于 2019-4-19 10:30 | 显示全部楼层
wch.zhang 发表于 2019-4-19 09:54
辛苦版主,张三2019/4/14 18:40起飞,起飞时间减去2019/4/13 17:35的落地时间,既是其中的一个休息时间,是 ...

希望有朋友能看明白问题
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-15 08:48 , Processed in 0.306803 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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