2017-04-15 65 views
0

我有这段代码。当我设置rDate = Range("A14"),练成总是明白RDATE作为值不是日期.if I set rDate as specific time (like 04/04/2017), iVal is 6.但是,如果我设置 RDATE =范围(“A14”),IVAL = 0`(F栏包含日期和范围(“A14”)= 04/04/2017)。我如何设置rDate作为日期?Excel设置范围有变量的日期

Dim rDate As Range 
Set rDate = Range("A14") 
iLastrow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row 
iVal = Application.WorksheetFunction.CountIf(Range("F1:F" & iLastrow), rDate) 
Sheets(1).Activate 
Range("C14").Value = iVal 
+0

你的代码(无效我的答案编辑后)应该工作。请告知它在做什么,这不是预期的。 – YowE3K

+0

单元格'A14'是否包含日期?单元格F1:F..'包含日期吗? “Excel总是将rDate理解为价值而非日期”是什么意思? – YowE3K

+0

是的。 F1:F包含日期和范围(“A14”)也包含日期。我想在列F中计算日期在单元格A14中包含日期 –

回答

1

尝试(代码中的注释说明)下面的代码:

Option Explicit 

Sub CountIfDates() 

Dim rDateRng As Range 
Dim rDate  As Double 
Dim iLastrow As Long 
Dim iVal  As Long 

With Worksheets("Sheet1") '<-- modify "Sheet1" to your sheet's name 
    Set rDateRng = .Range("A14") 
    rDate = rDateRng.Value ' <-- get the date value and store the the numeric value 

    iLastrow = .Range("A" & .Rows.Count).End(xlUp).Row 
    iVal = Application.WorksheetFunction.CountIf(.Range("F1:F" & iLastrow), rDate) 
End With 

Sheets(1).Range("C14").Value = iVal 

End Sub