想象一下excel中的下表:
姓名 | 创建日期 |
---|---|
约翰 | 2021.01.01. |
迈克 | 2010.01.02. |
卢克 | 2010.01.03. |
我想得到约翰作为返回值。 下面的代码工作正常,但它返回最早的日期:
Dim earliest as date, latest as Date
earliest = worksheetfunction.Min(Range("A1:A100"))
latest = worksheetfunction.Max(Range("A1:A100")
debug.print earliest
我想获取最早日期的配对值,该值位于创建日期左侧的一列中。
答案 0 :(得分:1)
有很多方法可以完成这个任务,这只是一个版本:
Sub test()
Dim lr As Long
Dim Rng As Range
Dim MinDate As Date
Dim MinRng As Long
Dim myName As String
lr = Cells(Rows.Count, 2).End(xlUp).Row
Set Rng = Range("B2:B" & lr)
MinDate = CDate(WorksheetFunction.Min(Rng))
MinRng = Rng.Find(What:=MinDate, LookIn:=xlValues).Row
myName = Cells(MinRng, 1)
End Sub
答案 1 :(得分:0)
请注意,这将仅返回第一个巧合,因此如果同一最早日期的配对值超过 1 个,它将仅返回第一个。
Sub test()
Dim MyWF As WorksheetFunction
Dim MyResult As String
Set MyWF = WorksheetFunction
'Let's say column B hold dates and column A the names
MyResult = MyWF.Index(Range("A1:A100"), MyWF.Match(MyWF.Min(Range("B1:B100")), Range("B1:B100"), 0))
Debug.Print MyResult
Set MyWF = Nothing
End Sub
另外,请注意 Range("A1:A100")
和 Range("B1:B100")
的大小必须相同才能正常工作。