【Excel技巧】- 員工生日提醒不再難
上一圖文教程開始就已經給大家介紹完畢Excel辦公常用的十大函數,我也列舉了很多案例供大家學習,我也儘可能的採用我在辦公中遇到的或其他同事、朋友遇到的問題給大家講解,當然人多力量大,大家有更好的實際案例,可以通過郵箱:saveutime@foxmail.com發送給我,我會增加到我的案例庫中,後期再分享給大家。
今天給大家分享的是使用Excel來設定員工生日提醒,聽過前期我為大家介紹的日期時間類函數的小夥伴,會一下子想到一個函數DATEDIF,那通過DATEDIF如何實現提前30天提醒員工生日呢?在書寫函數之前呢,我給大家講解2個Case,對最終實現方法有個鋪墊。
Case1:
公式:
=DATEDIF($D3,TODAY(),"yd")
=DATEDIF($D3 - 30,TODAY(),"yd")
=30 - DATEDIF($D3 - 30,TODAY(),"yd")
通過上面的動態圖大家可以發現,想要提前提醒員工生日,我們可以把已經過完生日的員工標記為負數,今天生日的員工標記為0,還未生日的標記為正數。
Case2:
公式:=TEXT(I3, "還有0天生日;生日已過0天;今天生日")
通過上面的動態圖可以看到TEXT函數的另類用法,就算在微軟的幫助文檔里都沒有找到該類使用方法。我從網上找到如下介紹:
TEXT格式一般結構:
text(數據源,">0顯示值;<0顯示值;=0顯示值;文本顯示值");
text(數據源,"[條件1]顯示值;[條件2]顯示值;否則顯示值;文本顯示值");
顯示>0的值:text(數據源,"0;;;");
只顯示負值:text(數據源,";0;;");
只顯示0值:text(數據源,";;0;");
只顯示文本:text(數據源,";;;G/通用格式");
隱藏文本:text(數據源,"G/通用格式;-G/通用格式;G/通用格式;");
全部隱藏:text(數據源,";;;");
只顯示負數(不顯示負號):text(數據源,";G/通用格式;;");
只顯示>0的值和文本:text(數據源,"0;;;文本顯示值")。
大家如果能夠找到官方介紹,希望您可以發送給我,我再分享給大家。有了上面2個Case,再通過函數DATEDIF實現提前30天員工生日提醒就很容易啦。
公式:=TEXT(30-DATEDIF(D3-30,TODAY(),"yd"),"還有0天生日;;今天生日")
公式中"還有0天生日;;今天生日"的意思是:DATEDIF函數的計算結果大於0的,顯示為「還有N天生日」;小於0的不顯示;等於0的顯示為「今天生日」。
更加細心的小夥伴可能會說,難道只能使用DATADIF函數才能實現類似功能嗎?答案當然是否定的,因為前期給大家介紹的MATCH函數也能達到類似功能,而且結果更加精準。只不過函數要更加複雜一些,因為使用了數組(複製完大括弧里的公式後記得按下鍵盤上的Ctrl+Shift+Enter哦)。
公式:{=TEXT(IFERROR(MATCH(TEXT(D8,"mmdd"),TEXT(NOW()+ROW($1:$31)-1,"mmdd"),)-1,-1),"還有0天生日;;今天生日")}
其實上面的公式很好理解,就是先使用TEXT(NOW()+ROW($1:$31)-1,"mmdd")生成一系列的mmdd數組,然後通過MATCH函數匹配員工的生日日期,找到員工生日的月日在從今日往後31天內的月日序列中的位置,以此找到該員工距離現在還有多久過生日。當然如果MATCH匹配不上的話,函數就會報錯,所以使用IFERROR來排除錯誤的可能,最後再通過上面介紹的TEXT函數直觀展現出來。
當然更加直觀一點的方法就是我們通過VBA代碼生成一個窗口,顯示最近生日的員工信息。實現效果如下:
該工作簿在被打開的時候,會自動根據員工信息,彈出今天生日、明天生日、後天生日、7天內生日、30天內生日以及本月生日的員工列表。我們來看看是如何通過代碼實現該功能的吧。
從上面的動態圖可以看出,工作表【在職員工名冊】里的按鈕指定的宏是員工生日提醒.xlsm!按鈕1_單擊,點擊編輯,即可進入到VBA編輯界面。之所以會在工作簿打開的時候彈出對話框,是因為把對話框顯示命令寫在了Workbook_Open事件中,當然不理解的小夥伴,我後期會慢慢指導大家學習編寫VBA代碼,現在有個大概了解即可哦。核心功能就是在窗體userform1里,代碼起初初始化了一系列ListView用於顯示員工信息,然後通過讀取員工出生日期列循環篩選出在某一時間內過生日的員工,分別放入對應的ListView中。
今天的分享就到此為止,大家如果在學習的過程中遇到任何問題,歡迎騷擾學習哦。
微信公眾號:SaveUTime
SUT學習交流群:615356012
關注公眾號,提高效率,節約您的時間!
推薦閱讀:
※Excel VBA 實戰(3)
※Excel VBA 基礎(0)
※請各位VBA大神救命!?
※VBA入門教程
TAG:MicrosoftOffice | VBA | 生日 |