您的位置: 首页 > EXCEL技巧 > Excel基础 >

用自定义函数获取某月中指定日期的数量

时间:2013-12-04 整理:docExcel.net

如果我们要获取某月中指定日期的数量,例如,2009年1月中有几个星期一?用Excel内置的日期时间函数无法解决这个问题。我们可以用自定义函数的方法来解决。按Alt+F11打开VBA编辑器,单击菜单“插入→模块”,在右侧的代码窗口中输入自定义函数:

Function WeekDaysInMonth(iYear As Integer, iMonth As Integer, iDay As Integer)
  Dim i, iDaysInMonth As Integer
  Dim LastDateInMonth As Date
  If iMonth < 1 Or iMonth > 12 Or iDay < 1 Or iDay > 7 Then
WeekDaysInMonth = "错误"
Exit Function
  End If
  iDaysInMonth = day(DateAdd("d", -1, DateSerial(iYear, iMonth + 1, 1)))
  LastDateInMonth = DateSerial(iYear, iMonth, iDaysInMonth)
  For i = iDaysInMonth - 1 To 0 Step -1
  If Weekday(LastDateInMonth - i, vbMonday) = iDay Then
  WeekDaysInMonth = WeekDaysInMonth + 1
  End If
  Next i
End Function

这个自定义函数有3个整数参数,即年、月和代表星期的数值。最后一个参数用1-7的数值表示星期一至星期日。

使用方法是在单元格中输入

  =weekdaysinmonth(年,月,星期数值)

例如要获取2009年12月中星期日的数量,在单元格中输入公式:

=weekdaysinmonth(2009,12,7)

公式结果返回4,表示2009年12月中有4个星期日。另外,输入的参数如果超出范围,如输入“=weekdaysinmonth(2009,12,10)”,最后一个参数超出范围,公式返回“错误”。

陌陌上市敲钟现场唐岩竖中指疑似回应网易控诉 问题:陌陌上市敲钟现场唐岩竖中指疑似回应网易控诉
回答:陌陌 CEO 唐岩(左)与经纬合伙人张颖(右)在敲钟现场竖中指 12 月 11 日消息,针对日前网易发声明控诉陌陌创始人兼 CEO 唐岩“在网易就职期间私创企业”、“涉嫌腐败”、“个人作风有问题”一事,唐岩在纳斯...
EXCEL中函数如何使用 问题:EXCEL中函数如何使用
回答:...F 计较返回两个日期参数的差值。 计较天数 DAY 计较参数中指定日期或引用单位格中的日期天数。 计较天数 DCOUNT 返回数据库或列表的列中指定条件而且包括数字的单位格数目。 条件统计 FREQUENCY 以一列垂直数组返回某个区域...
网络类函数FILTERXML在XML结构化内容中获取指定格 问题:网络类函数FILTERXML在XML结构化内容中获取指定格
回答:网络类的函数我们已经讲了一个了,就是WEBSERVICE,本次我们来介绍另外一个函数--FILTERXML,如果WEBSERVICE所获取到的是XML格式的内容,则可以通过这个函数直接从XML的结构化信息中直接过滤出目标数据,我们还是通过实例来演示...
用自定义函数获取工作表名称 问题:用自定义函数获取工作表名称
回答:...多时,逐一手工输入有些繁琐,这时可以添加一个自定义函数来快速获取工作表名称,方法如下: 按Alt+F11,打开VBA编辑器,单击菜单“插入→模块”,在代码窗口中输入下列代码: Function GetSheetName(idx As Integer, Optional relative_po...
获取单元格所在列的名称 问题:获取单元格所在列的名称
回答:...列的名称,如A9单元格的列名“A”,可以用公式和自定义函数的方法来实现。 1.用公式获取列名 在任意单元格中输入公式: =LEFT(ADDRESS(ROW(),COLUMN(),4),LEN(ADDRESS(ROW(),COLUMN(),4))-LEN(ROW())) 公式说明:先用ROW和COLUMN函数返回公式所在...
用自定义函数获取单元格注释 问题:用自定义函数获取单元格注释
回答:我们可以用一个自定义函数来提取单元格注释。方法如下: 1.按Alt+F11,打开VBA编辑器。 2.单击菜单“插入→模块”,在右边的代码窗口中输入代码: Function GetCommentText(rCommentCell As Range) Dim strGotIt As String   On Error Resume Next &...
相关推荐: