【问题标题】:Excel VBA Worksheetfunction.Match doesn't work with DatesExcel VBA Worksheetfunction.Match 不适用于日期
【发布时间】:2020-09-14 23:41:13
【问题描述】:

我需要将 MATCH 函数应用于一系列日期(在 VBA 中。以单元格公式编写的标准 MATCH 函数确实可以按预期工作。)寻找最大可能的索引,其对应日期为<=查找日期。这是我的代码和一个最小的工作示例:

Function test_debug_func(x As Date, arr As Range) As Integer
Debug.Print "entered function"
test_debug_func = WorksheetFunction.Match(x, arr, 1)

End Function

我通过打印调试语句检查了该函数确实输入了。但是,它无法继续使用WorksheetFunction.Match 函数。我还检查了所有日期确实是Date,而不是其他格式。

这对我来说根本没有任何意义,为什么这不起作用。有人可以帮忙吗?谢谢!

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    由于日期只是数字,您可以使用CLng

    test_debug_func = WorksheetFunction.Match(CLng(x), arr, 1)
    

    【讨论】:

    • 哇,谢谢它的工作!但奇怪的是我也试过Cint,但没用。另外,我希望 Excel 足够聪明,可以在比较它们时将 Date 隐式转换为 Integer,但它没有......
    • Integer 的最大值是32767...您的日期对应更大的数字,例如2020/1/143831,所以你需要CLng 而不是CInt
    猜你喜欢
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多