excel CountIf以及日期和时间的VBA问题:计数器不工作

cgyqldqp  于 2022-12-14  发布在  其他
关注(0)|答案(1)|浏览(180)

我在两列中有相同的日期和时间。现在我想循环第二列的日期和时间,并计算第一列中有多少项(“A1:A10”)大于循环中相应的日期和时间。但计数始终为零(“C1:C10”)。
CountIf with dates and times

Sub countif_datetime()

Dim sheet1 As Worksheet
Dim my_range As Range
Dim i As Integer

Set sheet1 = Worksheets("Sheet1")
Set my_range = sheet1.Range("A1:A10")

For i = 1 To 10
    sheet1.Cells(i, 3).Value = WorksheetFunction.CountIf( _
        my_range, ">" & sheet1.Cells(i, 2).Value _
    )
    Next i
    
End Sub

当我在工作表(“D1:D10”)中使用相同的函数(countif)时,计数就在那里。
我也试着把日期转换成双倍,也不起作用。

olhwl3o2

olhwl3o21#

我无法在我的端重现您的错误,即您的代码对我有效
但由于公式在您的端工作,您可以考虑使用公式方法

Sub countif_datetime()

    With Worksheets("Sheet1")
        With .Range("A1:A10").Offset(, 2)
            .FormulaR1C1 = "=COUNTIF(R1C1:R10C1,"">"" & RC[-1])"
            .Value = .Value ' turn formulas into values
        End With
    End With
End sub

或者,使用稍微更一般方法:

With Worksheets("Sheet1")
    With .Range("A1:A10").Offset(, 2)
    
        Dim firstRow As Long, _
            lastRow As Long
            firstRow = .Rows(1).Row
            lastRow = .Rows(.Rows.Count).Row
        .FormulaR1C1 = "=COUNTIF(R" & firstRow & "C1:R" & lastRow & "C1,"">"" & RC[-1])"
        .Value = .Value

    End With
End With

相关问题