2013-02-26 157 views
0

我试图找到Excel VBA中的两个日期之间的星期数(与之间的一些最小/最大功能),得到类型不匹配错误(运行时错误'13' )为以下行:Excel VBA与分钟和最大值的年份

WeeksWorked = Application.WorksheetFunction.RoundDown _ 
      (52 * Application.WorksheetFunction.YearFrac _ 
      (Application.WorksheetFunction.Max(DOH, DateValue("Jan 1, 2012")), _ 
       DateValue("Dec 31, 2012")), 0) 

任何人都有任何方向,因为我做错了,它将不胜感激!

+2

尝试使用Datediff()http://www.techonthenet.com/excel/formulas/datediff.php – 2013-02-27 00:06:09

+0

感谢您的提示! – vzhu 2013-02-27 21:36:56

回答

0

正如意见建议,你可以只是做:

debug.print DateDiff("ww", DateValue("Jan 1, 2012"), DateValue("Dec 31, 2012")) 

如果由于某种原因,你想推出自己的,你可以截断的商:

 
| day1 - day2 | 
--------------- 
     7 

示例代码:

Sub test_numWeeks_fn() 
    Call numWeeks(DateValue("Jan 1, 2012"), DateValue("Dec 31, 2012")) 
End Sub 

Function numWeeks(d1 As Date, d2 As Date) 
    Dim numDays As Long 
    numDays = Abs(d1 - d2) 
    numWeeks = Int(numDays/7) 
    Debug.Print numWeeks 
End Function 

Resulul t:

52 
+0

感谢您的回应。是的,决定推出自己的...谢谢。 – vzhu 2013-02-27 20:49:31

1

不知道为什么你需要在VBA中使用它,下面是你可以尝试的东西。

在Excel:

假设开始日期是在A1,结束日期为A2,然后A3,

=(NETWORKINGDAYS(A1,A2))/5 

现在是在工作日的角度,从而使五天工作周。如果您在分析工具包插件需要7天每周定期天,

=WEEKNUM(A3)-WEEKNUM(A2) 

功能WEEKNUM()计算给定日期正确的周数,如果你是在美国下面的用户定义函数将根据您计算机上的本国语言设置计算正确的周数。

如果您仍然需要使用VBA试试这个:(蒂姆指出DateDiff非常方便。)或者你甚至可以用Evaluate to trigger WEEKNUM

Option Explicit 

Function numWeeks(startDate As Date, endDate As Date) 
    numWeeks = DateDiff("ww", startDate, endDate) 
End Function 

使用评估上WEEKNUM

Function numWeeks(startDate As Range, endDate As Range) 
Dim s As Integer, t As Integer 
    s = Application.Evaluate("=WEEKNUM(" & startDate.Address & ",1)") 
    t = Application.Evaluate("=WEEKNUM(" & endDate.Address & ",1)") 
    numWeeks = t - s 
End Function 

+0

感谢您的回答,绝对有帮助。我在VBA中需要一个确定员工人口工作周数的最大周数的程序。 – vzhu 2013-02-27 20:48:39

0

enter image description here试试下面的代码:

Sub example() 

Dim dob As Date 
dob = #7/31/1986# 

Dim todaydt As Date 
todaydt = Date 

Dim numWeek As Long 
numWeek = DateDiff("ww", dob, todaydt) ' Difference in weeks 

End Sub 
+0

感谢您的回应,请记住有用。 – vzhu 2013-02-27 20:48:58