我尝试的是基于单元格
我已经尝试使用
我做错了什么?
我有点困惑使用
oSht_Input.Cells(Rows, 7)
,在另一个工作表(“periodSheet”)的A列中查找匹配项,并根据给定列获得相应的值。我已经尝试使用
.Index
和.Match
结合使用来执行此操作。对于我来说,.Index
可以正常工作,但是我收到了以下错误信息:
我也尝试在代码中使用运行时错误'1004':无法获取WorksheetFunction类的Match属性。
Application.Match
,但会返回#N/A
值。我做错了什么?
我有点困惑使用
Application.Match
和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
将接收一个单元格的值,该值绝对是日期值。期间表中的A列包含了从2000年1月1日到2020年12月31日的每个日期,基本上涵盖了所有可能的日期。您可以安全地假设dateCell
的值将在这20年的范围内。
1. 这是oSht_Input,其中G列是日期
2. 这是PeriodMetadata表,我正在尝试匹配A列(该列包含2000-2020年的每个日期),然后根据.index函数找到值。
Match()
函数,我发现在处理日期时将其转换为Long
通常是解决问题的方法。 - SierraOscarCLng()
。Excel将日期存储为数字,有时在VBA中必须遵从这个事实。 - SierraOscar