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
提前致谢!