标签:
野生程序猿 | 发表时间:2013-10-15 23:51:18 | 更新时间: 2020-04-24 23:13:42 | 阅读数:396 | 评论数:0 | 字数:1067
本文2013-10-15 23:51:18首发于新浪博客,地址:http://blog.sina.com.cn/s/blog_638f98570101fbqn.html。
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] 阿喀琉斯之踵:http://baike.baidu.com/link?url=W6Z1RSSUJtjbPSQqB2J4EGLFj2K3l-2knVOIl2clb8Zk1sOy2DxqPLiwFyVFnW72 。