gpt4 book ai didi

excel - 如何使 match() 与 Excel VBA 中的日期一起使用?

转载 作者:行者123 更新时间:2023-12-02 15:44:22 25 4
gpt4 key购买 nike

我在 Excel VBA 中使 match() 工作时遇到问题。代码是:

x = Application.Match("Sep 2008", Range("F1:F1"), 0)

单元格 F1 中的值为 9/1/2008。

即使我将 Sep 2008 更改为 9/1/2008,它仍然不会返回任何值。

知道如何修复它吗?

最佳答案

为什么即使我将 Sep 2008 更改为 9/1/2008,它仍然没有返回任何值。

是因为当excel中有一个日期时,Excel会自动将该日期转换为数值,你真正要搜索的是:

39692

此数字是 9/1/2008 与 Excel 默认值 1/1/1900 之间的天数

Excel 中的每个日期都存储有这样的值。因此,处理此问题的最简单方法是使用 CDate() 将您看到的日期转换为 excel 看到的日期。

这本身会给你一个无用的错误,即 vba 无法获取该属性。

这是因为 Lookup_value 可以是一个值(数字、文本或逻辑值)或对数字、文本或逻辑值的单元格引用。不是日期,因此只需将当前日期值转换为数字,即可使用 CLng()

在列表中搜索匹配的数字

尝试一下,它也会比使用“查找”替代方案快得多:

x = WorksheetFunction.Match(CLng(CDate("Sep 2008")), Range("F1:F1"), 0)

这应该会给你预期的结果

要处理未找到匹配项的情况,请尝试此子:

Sub MatchDate()
Dim myvalue As Double
Dim LastRow As Long

LastRow = Cells(Rows.Count, "F").End(xlUp)

On Error GoTo NotFound
myvalue = WorksheetFunction.Match(CLng(CDate("Sep 2008")), Range("F1:F" & LastRow), 0)
MsgBox (myvalue)
End

NotFound:
MsgBox ("No Match Was Found")
End

End:
End Sub

关于excel - 如何使 match() 与 Excel VBA 中的日期一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16483156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com