分享

VBA判断单元格区域内日期的最值(最大值、最小值、第二大值、第二小值)

 莫怜飘逸 2023-09-04 发布于广东

VBA判断最大值用Application.Max函数,最小值用Application.Min函数,第N大值用Application.Large函数,第N小值用Application.Small函数,不过因为是日期格式,所以结果还要用CDate函数转换为Date数据类型,下面举例用法:

比如想要判断以上表格中第一列日期的最值(最大值、最小值、第2大值、第2小值),可以使用以下代码:

Sub 判断单元格区域内日期的最值()
MsgBox CDate(Application.Max(Columns(1)))   '判断单元格区域内最大日期
MsgBox CDate(Application.Min(Columns(1)))   '判断单元格区域内最小日期
MsgBox CDate(Application.Large(Columns(1), 2))   '判断单元格区域内第二大日期
MsgBox CDate(Application.Small(Columns(1), 2))   '判断单元格区域内第二小日期
End Sub

如果想要第N个大、小值,只需更改以上代码的Application.Large、Application.Small的第2个参数即可。

需要注意的是,Application.Large和Application.Small函数的第N大、小值,不是数值内第N大、小值,而是数组内第N大、小值,也就是说,如果数组内最大的值是10,而数组内有3个10,那么无论是最大值,还是第二大值、第三大值,都会是10。

另外因为最值函数不仅适用于单元格区域,还适用于数组,所以如果想要换一种思路,还可以这样写:

Sub 判断单元格区域内最大日期2()
arr = WorksheetFunction.Transpose(Range("A2:A21"))  '单元格区域内数据转化为数组
MsgBox CDate(Application.Max(arr))   '判断单元格区域内最大日期
End Sub

以上代码就是先把要判断最值的单元格区域放入数组中,再使用最值函数对数组内元素进行判断,能生成同样的结果。

想要了解更多VBA相关知识,欢迎到http://moqingyan.360doc.com我的个人图书馆查看。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多