如何在两个日期之间查找数据

时间:2013-12-31 19:04:16

标签: excel excel-2007

我不经常使用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”等...基本上,如果我提供日期值它应该找到那个特定日期休假的名字。

有人可以帮我找到正确的公式吗?

2 个答案:

答案 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;

enter image description here

如果您想要这样做,可以开发宏代码来自动更新高级过滤器。首先确保过滤器能够满足您的需求。

以下是用户更改日期后运行的宏代码。看看它是否适合你。您可能需要根据具体情况对其进行修改。

如果可行,您可以设置一个按钮来运行它。如果这也有效,您可以开发代码以通过适当的事件触发它,以完全自动化。

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