Excel中的函數無疑是強大的,但是再強大的戰士也有他脆弱的腳后跟[1]。這兩天在使用Excel的時候遇到了一個需求,要在某一個單元格里面自動計算今天是星期幾(如顯示 Today is Tuesday)。本來以為Excel會有相應的函數,但是找來找去也沒有找到,只有WEEKDAY可以返回今天是本周的第幾天,是個數字。於是寫下了一個奇怪的公式 ="Today is "& WEEKDAY(TODAY(),2),計算結果是”Today is 2”。
這可真夠2的!
遇到問題就要想辦法解決,這次出手相救的是Excel的自定義函數功能,使用到的是老不死的VBA,看懂下面的內容要點兒編程知識。
Office 2010版及以后要在工具欄里面找到VBA(或稱宏)比較點兒曲折,但使用快捷鍵Alt+F11能夠直接調出VBA窗口,然后插入模塊,就可以自定義函數了。
所謂的自定義函數其實就是寫一個函數程序,比如上面提到的例子,我們可以寫一個WEEKDAYNAME函數將WEEKDAY返回的值做進一步的轉換:1轉換成Moday,2轉換成Tueday……直到7轉換成Sunday。
這是一個很簡單的函數,VB代碼如下:
Function WEEKDAYNAME(W As Integer) As String Select Case W Case 1 WEEKDAYNAME = "Monday" Case 2 WEEKDAYNAME = "Tuesday" Case 3 WEEKDAYNAME = "Wednesday" Case 4 WEEKDAYNAME = "Thursday" Case 5 WEEKDAYNAME = "Friday" Case 6 WEEKDAYNAME = "Saturday" Case 7 WEEKDAYNAME = "Sunday" End Select End Function
函數代碼寫完以后,關閉VBA窗口,使用剛才自定義的WEEKDAYNAME函數在Excel單元格里面重寫公式 ="Today is "&WEEKDAYNAME(WEEKDAY(TODAY(),2)),計算結果是“Today is Tuesday”,實現了最初的設想。
-----
注:圖片來源於網絡。
[1] 阿喀琉斯之踵。
-----
版權聲明:本文由@我只是一小小鳥創作,采用“知識共享 署名-非商業性使用-禁止演繹 3.0 中國大陸 許可協議”進行許可。除非注明,均為原創文章,轉載請注明:轉載自這只是一小小鳥窩。本文地址: http://blog.sina.com.cn/s/blog_638f98570101fbqn.html