用下面的代码,我收到错误variables未定义
列A,D和E是date和时间。
我试图找出A列中的date在开始date和结束date之间有多less次。
A列可能在30天到60天之间变化,而开始和结束date为数千。
两个问题:
- 为什么我收到错误variables未使用下面的代码定义?
- 如果单元格A2是date和时间24Feb17 12H00那么我在A3单元格中input什么公式,以便它读取25Feb17 12H00等等?
码:
Option Explicit Sub DaysCount() Dim endRow As Long Dim LastRow As Long Dim ICount As Long Dim Day() As Variant Dim StartDate() As Variant Dim EndDate() As Variant ICount = 0 With ThisWorkbook.Worksheets("sheet1") LastRow = .Range("A" & .Rows.count).End(xlUp).Row endRow = .Range("D" & .Rows.count).End(xlUp).Row Day = Sheet1.Range("A2:A" & LastRow) StartDate = Sheet1.Range("D2:D" & endRow) EndDate = Sheet1.Range("E2:E" & endRow) For i = LBound(StartDate) To UBound(StartDate) For J = LBound(Day) To UBound(Day) If Day(J, 1) >= StartDate(i, 1) And Day(J, 1) <= EndDate(i, 1) Then ICount = ICount + 1 Else End If Sheet1.Range("B" & J).Value = ICount Next i ICount = 0 Next J End With End Sub
-
Option Explicit
强制你声明所有的variables,所以你也需要声明i
和j
。
而你的Next i
和Next j
不是很好! -
VBA:
DateAdd("d",.Range("A3"),1)
更正后的代码:
Option Explicit Sub DaysCount() Dim i As Long Dim j As Long Dim endRow As Long Dim LastRow As Long Dim ICount As Long Dim Day() As Variant Dim StartDate() As Variant Dim EndDate() As Variant ICount = 0 With ThisWorkbook.Worksheets("sheet1") LastRow = .Range("A" & .Rows.Count).End(xlUp).Row endRow = .Range("D" & .Rows.Count).End(xlUp).Row Day = Sheet1.Range("A2:A" & LastRow) StartDate = Sheet1.Range("D2:D" & endRow) EndDate = Sheet1.Range("E2:E" & endRow) For i = LBound(Day) To UBound(Day) For j = LBound(StartDate) To UBound(StartDate) If Day(j, 1) >= StartDate(i, 1) And Day(j, 1) <= EndDate(i, 1) Then ICount = ICount + 1 Else End If Next j .Range("B" & i).Value = ICount ICount = 0 Next i End With End Sub