我正在研究VBA项目,在这里我选择一个日期,然后在具有代码和日期(及其他信息)的表中搜索。我需要获取最接近的前一个(或相同,如果存在)日期和要检查的代码的行位置。(代码和日期可以按任何顺序排列。)
在图片中,您可以看到表4月16日是两次,但代码不同。因此,如果它搜索日期为4月17日,并使用代码“ V-1”,则应该将第8行丢给我,但是如果我使用代码“ V-2”,则应获取该表的第2行
我正在使用具有VBA和excel函数的Excel 365。
Set search_sheet = Sheets("sheet 1")
Set stlo = search_sheet.ListObjects("table_to_look")
For Each cell In Range("table_to_look[code]")
If cell.Value = repetead Then
GoTo skipLoop
End If
'The static values are just for the example, they would be dynamic
Debug.Print Application.WorksheetFunction.Match(Application.WorksheetFunction.MaxIfs(stlo.DataBodyRange.Columns(5), _
stlo.DataBodyRange.Columns(5), "<=04-17-2019", _
stlo.DataBodyRange.Columns(1), "=V-1"), _
stlo.DataBodyRange.Columns(5))
repetead = cell.Value
skipLoop:
Next cell
使用该代码,即使我将第二个条件更改为“ = V-2”,它也始终打印第8行。