[算表] 找出發生最早日期和算出天數

作者: 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