2013-02-26 150 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