VBA-Excel返回最新日期

时间:2016-06-09 18:01:29

标签: excel vba excel-vba

我是使用VBA在Excel中编程功能的新手(实际上今天早上刚开始)。这是我的问题,包括我几乎但不起作用的解决方案。

问题大纲:

我有2列数据,一个userID和一个Date列。我想创建一个函数,返回userID的最大日期(最新)。用户ID可能会出现一次或多次(数量因用户而异,但不超过20)。

现在为了让我的小脑更容易理解这个问题,我预先将userID排序为一个接一个地出现,然后创建第三个列来标记userID的第一个实例(不一定是最早的那个/最新日期)使用简单的excel If语句:如果它的第一个实例是userID,则为空。

然后我创建了一个函数,它接受一系列单元格(userID)和一个其他值(第三列单元格包含单个userID值)

A typical excel worksheet will look like this:
userID   Date     First Instance
    1    3/3/12   1
    1    3/2/11   
    1    2/3/14
    2              2
    2    3/4/15  
    2
    2    5/6/15
    3    5/5/16    3
    4    4/4/14    4
    4 
    4    6/7/08
    ...

我编写了下面的函数,它将userID作为iRange(我选择了20个以上,以便其他用户可能还有20个userID实例),并且idCell作为第一个实例的单个标识符用户ID。

代码背后的逻辑是:

  • 循环浏览iRange并将其与idCell进行比较
  • 如果它相等,请检查下一个单元格(iRange中元素旁边是否为日期)以及是否为
  • 检查是否大于maxDate,如果为true则存储
  • 最后我返回maxDate

结果:

我收到了一个号码,但这不是约会对象,我认为它与约会无关。

Function returnDate2(iRange As Range, idCell As Range) As Date
    Dim elem As Variant
    Dim i As Long
    Dim maxDate As Date
    For Each elem In iRange
        If elem = idCell Then
            If IsDate(elem.Offset(0, 1)) Then
                If elem.Offset(0, 1) > maxDate Then
                    maxDate = DateValue(elem.Offset(0, 1))
                End If
                returnDate2 = maxDate
            End If
        End If
    Next elem
End Function

提前致谢!

0 个答案:

没有答案