Excel VB计算两个单元格之间的星期数

大家好,

我对VB非常陌生,我一直在尝试创build一些非常简单的东西。 我试图让Excel计算两个单元格与date值之间的周数。 第一个单元格位于固定位置,第二个单元格是该列使用范围内的最后一个单元格。

Last是一个function,我捏网。 我无法得到这个工作,任何帮助将不胜感激。

  Sub test_date_calc() Dim LastCell As String Dim nwks As Integer Dim rng As Range Set rng = Sheets("data13").UsedRange LastCell = Last(3, rng) nwks = (Cells(3, 2) - LastCell.Value) / 7 If nwks > 13 Then MsgBox "greater" Else MsgBox "Less" End If End Sub 

下面的Last函数,这可能有帮助

 Function Last(choice As Long, rng As Range) 'Ron de Bruin, 5 May 2008 ' 1 = last row ' 2 = last column ' 3 = last cell Dim lrw As Long Dim lcol As Long Select Case choice Case 1: On Error Resume Next Last = rng.Find(What:="*", _ After:=rng.Cells(1), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 Case 2: On Error Resume Next Last = rng.Find(What:="*", _ After:=rng.Cells(1), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Column On Error GoTo 0 Case 3: On Error Resume Next lrw = rng.Find(What:="*", _ After:=rng.Cells(1), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Row On Error GoTo 0 On Error Resume Next lcol = rng.Find(What:="*", _ After:=rng.Cells(1), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Column On Error GoTo 0 On Error Resume Next Last = rng.Parent.Cells(lrw, lcol).Address(False, False) If Err.Number > 0 Then Last = rng.Cells(1).Address(False, False) Err.Clear End If On Error GoTo 0 End Select End Function 

我认为你的错误是由于这一行:

  nwks = (Cells(3, 2) - LastCell.Value) / 7 

LastCell是一个string,所以它不需要.Value

  nwks = (Cells(3, 2) - LastCell) / 7 

您可以在VBA中使用DATEDIFFfunction。

  DateDiff( interval, date1, date2, [firstdayofweek], [firstweekofyear] ) 

用法示例:

 nwks = DateDiff("ww", Cells(3, 2).Value, LastCell.Value) 

你可以看到DATEDIFF HERE的文档