如何找到最早日期的配对值?

时间:2021-05-27 19:01:36

标签: excel vba date

想象一下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

我想获取最早日期的配对值,该值位于创建日期左侧的一列中。

2 个答案:

答案 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") 的大小必须相同才能正常工作。

相关问题