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

[VBA]用一个简单例子说明如何在Excel中自定义函数的更多相关文章

  1. 一个简单例子:贫血模型or领域模型

    转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...

  2. (转)Java中使用正则表达式的一个简单例子及常用正则分享

    转自:http://www.jb51.net/article/67724.htm 这篇文章主要介绍了Java中使用正则表达式的一个简单例子及常用正则分享,本文用一个验证Email的例子讲解JAVA中如 ...

  3. C语言多线程的一个简单例子

    多线程的一个简单例子: #include <stdio.h> #include <stdlib.h> #include <string.h> #include &l ...

  4. quartz---的一个简单例子

    quartz---的一个简单例子 首先建立一个maven项目.jar工程即可.(提示:我前面有如何建立一个maven工程的总结以及maven环境的配置.) 1.建立好后点击到app中运行,--> ...

  5. 用socket.io实现websocket的一个简单例子

    socket.io 是基于 webSocket 构建的跨浏览器的实时应用. 逛博客发现几个比较好的 一.用socket.io实现websocket的一个简单例子 http://biyeah.iteye ...

  6. 6.1 如何在spring中自定义xml标签

    dubbo自定义了很多xml标签,例如<dubbo:application>,那么这些自定义标签是怎么与spring结合起来的呢?我们先看一个简单的例子. 一 编写模型类 package ...

  7. 如何在Excel中少犯二(I)

    作者:何明科链接:https://zhuanlan.zhihu.com/p/23472480来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 收到不少建议,要求开知乎Li ...

  8. 词法分析程序 LEX和VC6整合使用的一个简单例子

    词法分析的理论知识不少,包括了正规式.正规文法.它们之间的转换以及确定的有穷自动机和不确定的有穷自动机等等... 要自己写一个词法分析器也不会很难,只要给出了最简的有穷自动机,就能很方便实现了,用if ...

  9. spring集合类型的setter注入的一个简单例子

    在项目中我们有时候会为集合类型设定一些默认的值,使用spring后,我们可以通过配置文件的配置,用setter方式为对象的集合属性提供一些默认值,下面就是一个简单的例子. 首先我们创建了一个名为Col ...

随机推荐

  1. 记一次pending请求问题查找过程

    情景再现 近期发现网站访问变慢,经常会出现请求无法响应的问题,一个请求长时间没有返回,导致页面出现504(Gateway Timeout),我们使用的nodejs+ngnix(反向代理). 猜测原因 ...

  2. css浮动+应用(瀑布流效果的实现)

    首先是index.html文件: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  3. JScript_Test

    Hello SyntaxHighlighter function helloSyntaxHighlighter() { return "hi!"; } function hello ...

  4. Ajax请求用户控件(.ascx)404错误

  5. iOS蓝牙4.0协议简单介绍

    iOS开发蓝牙4.0的框架是CoreBluetooth,本文主要介绍CoreBluetooth的使用,关于本文中的代码片段大多来自github上的一个demo,地址是myz1104/Bluetooth ...

  6. 浅谈Java内存及GC

    目录: 1.JAVA虚拟机规范与JAVA虚拟机 2.JVM结构图 3.GC策略与原理 4.垃圾收集算法 5.回收的时机 6.垃圾搜集器 一.JAVA虚拟机规范与JAVA虚拟机 内存,是指程序运行时的数 ...

  7. sql server 系统表系统视图 及作用说明

    sql server 系统视图,可分为: 目录视图   兼容性视图    动态管理视图和函数    信息架构视图    复制视图 系统表: sysaltfiles主数据库 保存数据库的文件 sysch ...

  8. python模块基础之getpass模块

    getpass模块提供了可移植的密码输入,一共包括下面两个函数: 1. getpass.getpass() 2. getpass.getuser() getpass.getpass([prompt[, ...

  9. jquery之营销系统

    // //////////////////////////优惠券开始//////////////////////////// // 给附加条件选择框添加事件 function inputFuJia() ...

  10. DDD(Domain Driver Designer) 领域驱动设计简介

    领域驱动设计之领域模型 加一个导航,关于如何设计聚合的详细思考,见这篇文章. 2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity i ...