繁体   English   中英

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

[英]A filtered list displayed on a new tab by date ranges

Excel已经出我的scope很久了,这个感觉很简单。 正在寻找过滤列表的公式,但结果在新选项卡上。

我发现的最接近的东西是这个FILTER function,但在网站上看到它是 2019 年发布的新功能。所以我无法访问它,因为我使用的是 Excel 2013。

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

在此处输入图像描述

因此,在新选项卡上过滤 2019 年 10 月 6 日至 2019 年 10 月 12 日这一周的日期将仅返回前 2 行。

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

最后过滤当前表将不符合我的目标。

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

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

然后使用它来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:1)),COLUMNS($A:A)),"")

向右和向下填充以填充您的矩阵,并且参考应该自我调整。

Table更改为您的表的名称,或使用绝对寻址。

在此处输入图像描述

在此处输入图像描述

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

在此处输入图像描述


公式(只是一个例子)

这是我在Sheet2上的结果:

在此处输入图像描述

A2中的公式:

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

注意:是数组公式,需要通过Ctrl Shift Enter 输入

向下和向右拖动


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

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

如果您像这样设置第二张工作表:

在此处输入图像描述

A2中的公式:

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

A3中的公式:

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

现在,从要将数据拉入的工作表中启动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,肯定是 go 使用我自己提供的公式,或者使用@RonRosenFeld 提供的 ListObject 更有效的方法。


在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM