VBA-Excel返回最新的date

我是使用VBA在Excel中编程function的新手(实际上刚刚在今天上午开始)。 这是我的问题,包括我几乎没有工作的解决scheme。

问题提纲:

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

现在为了让这个问题更容易理解我的小脑袋,我预先将用户IDsorting,然后创build第三列来标记用户标识的第一个实例(不一定是最早/最近的date)使用简单的excel if语句:如果它的第一个实例是userID,否则是空的。

然后我创build了一个函数,它接受一系列的单元格(userIDs)和一个单独的值(第三列单元格包含一个单一的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 ... 

我写了下面的函数,它将用户ID作为iRange(我select超过20个,这样对于可能有20个userID实例的其他用户也包括在内),idCell作为userId第一个实例的唯一标识符。

代码背后的逻辑是:

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

结果:

我收到一个数字,但这不是一个约会,我不认为它约会date。

 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 

提前致谢!