我不经常使用Excel,因此我不熟悉复杂的公式 我有一个像这样的Excel 2007表:
A B C Name leavefrom leaveupto Mathew 07-Mar-13 25-Mar-13 john 12-Mar-13 15-Mar-13 kerry 18-Apr-13 25-Apr-13 Mikes 27-Jun-13 03-Jul-13
我有一个单元格 C10 ,我提供了一个日期值。如果我提供14-mar-13那么它应该显示“john”和“Mathew”的名称,如果我提供19-Apr-13它应该显示“kerry”等...基本上,如果我提供日期值它应该找到那个特定日期休假的名字。
有人可以帮我找到正确的公式吗?
答案 0 :(得分:1)
如果Name
在A1中,那么:
=IF(AND(C$10>=B2,C$10<=C2),A2,"")
在D2中并复制到西装可以服务。
答案 1 :(得分:1)
由于您暗示您可能需要返回多个名称,我建议使用高级过滤器。查看帮助以了解如何设置它。但假设您将日期输入单元格G1。您的标准范围可能看起来像(显示公式而不是显示在这些单元格中的结果)
leavefrom leaveupto
="<="&D1 =">="&D1
如果您需要更多帮助,请回复
这是使用高级过滤器的图片。请注意对话框中的选项&#34;复制到另一个位置&#34;,并将地址改为&#34;复制到&#34;
如果您想要这样做,可以开发宏代码来自动更新高级过滤器。首先确保过滤器能够满足您的需求。
以下是用户更改日期后运行的宏代码。看看它是否适合你。您可能需要根据具体情况对其进行修改。
如果可行,您可以设置一个按钮来运行它。如果这也有效,您可以开发代码以通过适当的事件触发它,以完全自动化。
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