VBA计数器基于日期

时间:2014-10-17 19:43:55

标签: excel vba

我创建了一个用户表单来跟踪服务请求,我在最后一部分遇到了麻烦。

第一个" A"是服务ID,第二个是" B"日期。我想" B"成为今天的日期和" A"从1开始计算,当我明天添加一个新请求时,我想要" A"再次从1开始。

以下是列" A"的代码,当创建新记录时#34; A"上升但是当日期改变时它不会从0开始。任何想法?

'Service ID
'check row above
'if "Date" then out put "1"
'if yesterday then out put "1"
'if today then ouput + 1

If (Sheet1.Cells(Rows.Count, "B").End(xlUp).Value) = "Date" Then
 serviceorder = "1"

ElseIf (Sheet1.Cells(Rows.Count, "B").End(xlUp).Value) < Date Then
 serviceorder = "1"

ElseIf (Sheet1.Cells(Rows.Count, "B").End(xlUp).Value) = Date Then
 serviceorder = (Sheet1.Cells(Rows.Count, "A").End(xlUp).Value) + 1

Else
End If

提前致谢。

2 个答案:

答案 0 :(得分:0)

为什么不将A列设为COUNTIF公式,以显示相应列B单元格中的日期在B列的所有列中显示的次数?这样当日期改变时,它将自动重置为1,并且每个新的时间在同一天输入请求,ID将增加1.VBA公式将是:

With Sheet1.Cells(Rows.Count, "A").End(xlUp).Offset(1)
    .Formula = "=COUNTIF(B:B,B" & .Row & ")"

    'Uncomment this next line if you want column A to contain values instead of formulas
    'If you do uncomment it, make sure you have already put the date in the B column for this entry
    '.Value = .Value
End With

答案 1 :(得分:-1)

我认为您的函数中的一般问题是Sheet1.Cells(Rows.Count, "B").End(xlUp)。 Rows.Count意味着 - 正如它所说 - 表单中的行数是1048576.在我看来,你选取了列的最后一个单元格而End(xlUp)不会让它变得更好。我认为Sheet1.Cells(1, "B").End(xlUp)应该会更好。很抱歉,如果我错了,我无法在此处重现您的方案。