按日期范围显示在新选项卡上的过滤列表

A filtered list displayed on a new tab by date ranges

Excel好久不在我的范围内了,这个感觉很简单。寻找用于过滤列表的公式,但结果位于新选项卡上。

我发现的最接近的东西是这个 FILTER 函数,但正如网站上所说,它是将于 2019 年发布的一项新功能。所以我无法访问它,因为我正在使用 Excel 2013.

我正在尝试过滤日期范围字段,因此本周的所有条目都将过滤到新选项卡。

因此,在新选项卡上使用 2019 年 10 月 6 日至 2019 年 10 月 12 日这一周的日期进行过滤将 return 仅显示前 2 行。

我已经尝试过 FILTER 功能,不,它在 MS Excel 2013 中不起作用。我也查看了 VLOOKUP,不。我知道 PIVOT 不是我想要的。我想避免 VBA 脚本编写,因为这最终会交给非开发人员。

最后过滤当前table不会满足我的objective.

此处有多条通往罗马的道路,但我们假设 Sheet1 上的示例数据:


公式(只是一个例子)

这是我在 Sheet2 上的结果:

A2中的公式:

=IFERROR(INDEX(Sheet1!A:A,SMALL(IF((Sheet1!$A:$A>=TODAY()-WEEKDAY(TODAY(),2)+1)*(Sheet1!$A:$A<=TODAY()-WEEKDAY(TODAY())+7)=1,ROW(Sheet1!$A:$A),""),ROW(A1))),"")

Note: It's an array formula and needs to be entered through CtrlShiftEnter

向下并向右拖动


AdvancedFilter(因为您似乎也对该选项感兴趣)

只是为了添加这个选项(虽然涉及一些体力劳动)

如果您像这样设置第二个 sheet:

A2中的公式:

=">="&TEXT(TODAY()-WEEKDAY(TODAY(),2)+1,"yyyy/mm/dd")

A3中的公式:

="<="&TEXT(TODAY()-WEEKDAY(TODAY(),2)+1,"yyyy/mm/dd")

现在,重要的是从要将数据拉入的 sheet 启动 AdvancedFilter。并分配适当的范围

结果如下:

要自动更新此 AdvancedFilter,您需要一个简单的 VBA,因此将以下内容粘贴为 Sheet1 上的 Worksheet_Change() 事件:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rng1 As Range, rng2 As Range
Dim lr1 As Long, lr2 As Long

With Sheet1
    lr1 = .Cells(.Rows.Count, 1).End(xlUp).Row
    Set rng1 = .Range("A1:C" & lr1)
End With

With Sheet2
    lr2 = .Cells(.Rows.Count, 1).End(xlUp).Row
    If lr2 > 3 Then
        Set rng2 = .Range("A5:C" & lr2)
        rng2.ClearContents
    End If
    rng1.AdvancedFilter xlFilterCopy, .Range("A1:C3"), .Range("A5")
End With

End Sub

现在您可以在 Sheet1 中添加数据,它会自动更新 AdvancedFilter,速度会很快。但是如果你想远离 VBA,一定要使用我自己提供的公式,或者使用 @RonRosenFeld 的 ListObject 的更有效的方法。


Advanced Filter只会复制到同一个工作表。

对于公式,您可以使用 AGGREGATE 函数和 Small 函数以及要忽略的选项,按顺序创建相关行号和 return 它们的数组错误。

然后使用它 INDEX 到数组中,IFERROR 负责将公式向下拖动多于现有的行。

例如,使用表格和结构化引用:在您想要结果的右上角单元格中:

=IFERROR(INDEX(Table1_2,AGGREGATE(15,6,1/((Table1_2[[Dates]:[Dates]]>=From)*(Table1_2[[Dates]:[Dates]]<=To))*ROW(Table1_2)-ROW(Table1_2[#Headers]),ROWS(:1)),COLUMNS($A:A)),"")

向右和向下填充以填充您的矩阵,参考应自动调整。

Table 更改为任何 table 的名称,或使用绝对寻址。