我是使用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。
代码背后的逻辑是:
结果:
我收到了一个号码,但这不是约会对象,我认为它与约会无关。
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
提前致谢!