gpt4 book ai didi

vba - 无法获取 WorksheetFunction 类的 Match 属性

转载 作者:行者123 更新时间:2023-12-02 10:10:26 26 4
gpt4 key购买 nike

我想做的是基于单元格 oSht_Input.Cells(Rows, 7) ,我想在另一个工作表的 (periodSheet) A 列中找到匹配项,并获取相应的基于给定列的值。

我尝试结合使用 .Index.Match 来执行此操作。 .Index 对我有用,但是我收到错误提示

Run-time error '1004': Unable to get the Match property of the WorksheetFunction class.

我还尝试在代码中执行 Application.Match 操作,但这会返回一个 #N/A 值。

我做错了什么?

我对 Application.MatchApplication.WorksheetFunction.Match 的用法有点困惑。

Set oSht_Input = Worksheets(outSheet)
Set periodSheet = Worksheets("PeriodMetadata")
lastRow = oSht_Input.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

For Rows = 2 To lastRow
With Application.WorksheetFunction
dateCell = oSht_Input.Cells(Rows, 7)
If rollupDataFile.GroupByPeriod Like "Week*" Then
If rollupDataFile.GroupByPeriod Like "*Sunday" Then
oSht_Input.Cells(Rows, 16).value = .Index(periodSheet.Range("B:H"), .Match(dateCell, periodSheet.Range("A:A"), 0), 1)
ElseIf rollupDataFile.GroupByPeriod Like "*Monday" Then
oSht_Input.Cells(Rows, 16).value = .Index(periodSheet.Range("B:H"), .Match(dateCell, periodSheet.Range("A:A"), 0), 2)

.... code continues

编辑:决定根据最初的反馈添加更多上下文,以便更好地说明。

dateCell 将接受单元格的值,这绝对是一个日期值。 periodSheet 中的 A 列包含从 2000 年 1 月 1 日到 2020 年 12 月 31 日的每个日期,基本上涵盖了所有可能的日期。您可以放心地假设 dateCell 中的值将在 20 年的范围内。

1. 这是 oSht_Input,其中 G 列是日期 This is the oSht_Input, where Column G is the date

2. 这是PeriodMetadata 表,我尝试在其中匹配 A 列(其中包含 2000-2020 年的每个日期,然后再根据 .index 函数查找值)。 This is the PeriodMetadata sheet, where I am trying to match to Column A (which contains every single date of year 2000-2020 before finding the value based on the .index function

最佳答案

处理日期时,请使用 CLng().Value2:

Sub SO()
'// C3 = "03/02/2015"
'// A1:A14 = "01/02/2015" to "14/02/2015"
'// All cells formatted as dates

'// This will NOT work:
Debug.Print WorksheetFunction.Match(Range("C3").Value, Range("A1:A14"), 0)

'// This WILL work:
Debug.Print WorksheetFunction.Match(Range("C3").Value2, Range("A1:A14"), 0)

'// This WILL also work:
Debug.Print WorksheetFunction.Match(CLng(Range("C3").Value), Range("A1:A14"), 0)

End Sub

这是因为 Excel 将日期存储为数字的方式 - 有时必须在 VBA 中考虑这一点

关于vba - 无法获取 WorksheetFunction 类的 Match 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29531742/

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