由于您暗示您可能需要返回多个名称,我建议您使用高级过滤器。查看帮助以了解如何设置它。但假设您在单元格 G1 中输入日期。您的条件范围可能看起来像(显示公式而不是那些单元格中显示的结果)
leavefrom leaveupto
="<="&D1 =">="&D1
如果您需要更多帮助,请回复
这是使用高级过滤器的图片。注意对话框中“复制到另一个位置”的选项,以及“复制到”的地址
如果您想这样做,可以开发宏代码来自动更新高级过滤器。首先确保过滤器符合您的要求。
这是在您的用户更改日期后运行的宏代码。看看它是否适合你。您可能需要根据您的具体情况对其进行修改。
如果有效,您可以设置一个按钮来运行它。如果这也可行,您可以开发代码以通过适当的事件触发它,从而完全自动化。
Option Explicit
Sub LeaveList()
Dim rDateCheck As Range
Dim rSrc As Range
Dim rCriteria As Range
Dim rRes As Range
Set rDateCheck = Range("G1") 'or wherever you have the date
If Not IsDate(rDateCheck) Then
MsgBox "You MUST enter a Date!"
Exit Sub
End If
Set rRes = Range("I1") 'or wherever you want the results
rRes.Resize(columnsize:=3).EntireColumn.Clear
With Cells
Set rSrc = .Find(what:="Name", after:=Cells(.Rows.Count, .Columns.Count), _
LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByColumns, _
searchdirection:=xlNext, MatchCase:=False)
'assume LeaveTable separated from rest of sheet by at least one empty
' column and row
Set rSrc = rSrc.CurrentRegion
End With
'Move Leave Table to leave room for Criteria Range
With rSrc
If .Row < 5 Then _
Range(.Rows(1), .Rows(5 - .Row)).Insert shift:=xlDown
End With
'Put Criteria Range above Table
Set rCriteria = Cells(1, rSrc.Column).Resize(2, 2)
rCriteria.Interior.Color = vbYellow
rCriteria(1, 1) = rSrc(1, 2)
rCriteria(1, 2) = rSrc(1, 3)
rCriteria(2, 1).Formula = "=""<="" & " & rDateCheck.Address
rCriteria(2, 2).Formula = "="">="" & " & rDateCheck.Address
rSrc.AdvancedFilter xlFilterCopy, rCriteria, rRes
End Sub