首页 > 解决方案 > 在 VBA 中查找最早的日期

问题描述

我在 D 列中有很多日期。我需要找到日期最早的学生,并在消息框中显示以下信息:

Sub Finddate()
    Dim Mn As Integer
    Mn = Application.Match(Application.Min(Range("D2:D18288")), Range("D2:D18288"), 0)
    MsgBox ("For the student with the earliest date (" & Range("D" & Mn) & ") the following information applies: " & Range("k" & Mn) & ", " & Range("L" & Mn) & " and " & Range("M" & Mn))
End Sub

但是,当我运行宏时,它显示错误的日期。表格中最早的日期是 31-08-1996,但它说最早的日期是 01-02-2010,如果我用=min(D2:D18288)Excel 写它会找到正确的日期。但我也需要它在 VBA 中工作。如果我将最小值更改为最大值,它也会找到错误的日期。但如果我改为写:

Mn = Application.Match(Application.Max(Range("D2:D18288")), Range("D2:D18288"))

它显示了正确的日期,但我需要找到最小日期而不是最大日期,当我将 max 更改为 min 时,出现类型不匹配错误。我真的不知道出了什么问题真的希望有人能帮助我!

标签: vbaexcel

解决方案


您的索引关闭了1 ......因为数据从D2而不是D1开始,Mn 指向刚好高于最小值的单元格。


推荐阅读