【发布时间】:2015-06-14 10:04:52
【问题描述】:
我想做的是基于一个单元格oSht_Input.Cells(Rows, 7),我想在另一个Sheet的(periodSheet)A列中找到匹配项,并根据给定的列获取相应的值。
我尝试结合使用 .Index 和 .Match 来做到这一点。 .Index 对我有用,但是我收到错误提示
运行时错误“1004”:无法获取 WorksheetFunction 类的 Match 属性。
我也尝试在代码中使用 Application.Match,但这会返回一个 #N/A 值。
我做错了什么?
我对@987654330@ 和Application.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 列是日期
2. 这是 PeriodMetadata 表,我试图在其中匹配 A 列(其中包含 2000-2020 年的每个日期,然后根据 .index 函数查找值。
【问题讨论】:
-
@Jean-FrançoisCorbett 那是因为我之前的探索是关于 Android 开发的,而给出的大部分内容并没有真正帮助解决我的问题。但是,一旦他们帮助/解决问题,我就会接受答案,并感谢其他所有人的投入。如果你真的想要一个赞成票作为赞赏,那很好,我就给你(不知道为什么要进行这个讨论,第一次在这些事情上被挑剔)
-
@Jean-FrançoisCorbett 指出。我会在等待更多建议/解决方案的同时进一步探索,谢谢
-
在 VBA 中使用
Match()函数,我发现在处理日期时转换为Long通常可以解决问题。 -
尝试改用
CLng()。 Excel 将日期存储为数字,有时您必须在 VBA 中接受这一事实。