[算表] 找出发生最早日期和算出天数

楼主: ck3300511 (迪恩)   2018-09-24 12:24:04
软件:Excel
https://imgur.com/a/zG5RTRE
如上图
E~J栏会填上日期 (有些字段没发生的话会空白)
我想在K栏找出E~J栏发生最早的日期
如果以上图来讲,希望K2会显示2018/01/05
然后L2会算出K2日期至今的天数,如果L2的数字大于等于60,就会变红字
然后使用者打开Excel的时候会跳出警示视窗,
内容是【A2的最早日期至今已经大于等于60】,该怎么做呢?
(另外想在E~J栏加入防呆机制-不管怎么输入日期都会变成oooo/oo/oo的西元年格式
例如:107/01/05、1070105、0105、1/15)
作者: soyoso (我是耀宗)   2018-09-24 12:33:00
如符合日期序列值的话,函数min来回传最早日期https://i.imgur.com/9RsugAj.jpg至今天数函数today()减k2的值,格式化条件大于等于60,字型色彩改为红色;打开该档案时跳出警示视窗方面,想到的是宏workbook_open触发,msgbox来显示提醒的字串防呆提醒要以符合日期格式键入的话,可于资料验证,储存格内允许,日期。e:j栏储存格格式改为yyyy/mm/dd,这样1/15的键入方式也可符合日期序列值的西元年格式
楼主: ck3300511 (迪恩)   2018-09-24 13:20:00
如果L栏有任何一个储存格大于等于60是用For Each cell In rng吗?
作者: soyoso (我是耀宗)   2018-09-24 13:31:00
这要看大于等于60是要显示红字(以格式化条件),或跳出警示视窗,如是要该视窗msgbox的话可用回文for each..next来累计合并最后要带入视窗内的字串
楼主: ck3300511 (迪恩)   2018-09-24 21:40:00
https://imgur.com/a/MLl8wO0 S大请问这样有地方需调整吗?如果是L栏其中一个储存格>=60就会跳Msgbox的话
作者: soyoso (我是耀宗)   2018-09-24 22:02:00
1.该活页簿只有一个工作表吗?二个工作表以上的话是否作用的工作表就是判断L1:L9999的工作表呢?如果不一定的话,请以sheets.range或workshees.range的方式指定2.要看循环于L1:L9999执行上的效率,如调整为动态的话,可以range.end、range.find取得最后有值的储存格,如要回传列号的话以row;如为连续资料的话也可以工作表函数counta或count如L栏其中一个储存格大于等于>=60就跳msgbox方式就要看还要于讯息内加上什么资讯。1.只有要一笔符合,跳出讯息且离开循环的话exit for2.回传的讯息要有那个储存格符合条件的话range.address字串连接上以&;若是要全部符合储存格都连接的话,设个变量来连结&,再将msgbox的部分移到next下方
楼主: ck3300511 (迪恩)   2018-09-24 22:16:00
只要有一笔符合就跳出讯息 exit for要怎么用呀
作者: soyoso (我是耀宗)   2018-09-24 22:19:00
如只要有一笔符合跳出讯息且离开循环的话 exit for就写在msgbox 下方如是要上述的话,也可以工作表函数countif,当计数大于0时就msgbox讯息,可不用循环
楼主: ck3300511 (迪恩)   2018-09-24 22:36:00
谢谢S大
作者: soyoso (我是耀宗)   2018-09-25 22:36:00
如是指https://imgur.com/a/MLl8wO0的话next加在end if下方;exit for加在end if上方
楼主: ck3300511 (迪恩)   2018-09-25 22:52:00
好!明天试试看~谢谢S大

Links booklink

Contact Us: admin [ a t ] ucptt.com