【问题标题】:Is there a way to simulate the filter function in excel with a formula?有没有办法用公式模拟excel中的过滤功能?
【发布时间】:2019-06-17 14:29:27
【问题描述】:

逐行命名。 跨列的日期。 对于给定日期,每个学生都有一个 1、“x”或没有值。

我有一个下拉列表,其中列出了我的表格(列)中的所有日期。

我想创建一个公式,它会在我的表中搜索匹配的日期,然后在该列中查找所有 1 的值,并为我提供一个名称列表。

这本质上是一个自动填充的动态过滤器功能。

我已经考虑了几个公式(索引匹配、索引匹配匹配、小行)甚至数据透视表,但没有运气。主要问题似乎是,在公式中使日期(列地址)动态化。

=IFERROR(SMALL(IF((GANTT!$FT$14:$FT$1003=1),GANTT!$A$14:$A$1003,""),ROW()-16),"")

在上面的公式中,FT 对应于日期Sunday, 7 Oct 2018,并为 FT 的静态列生成所有正确的名称。如何制作 FT 变量并将其链接到下拉列表?我可以以某种方式使用地址和间接吗?

我可以使用某种辅助单元格来告诉公式要查看哪一列,而不是搜索多年的数据吗?

抱歉,我不知道如何发布我的示例数据表。

NAME | DATE1 | DATE2 | DATE3
JON  |       |     1 |     4
Jane |       |     0 |     1
BILL |     1 |       |     2

【问题讨论】:

  • 我会说尽最大努力将示例数据表添加到问题中,即使格式已关闭,并且有人可以为您修复/编辑它。
  • 使用INDIRECT函数指向你想要的列
  • 样本数据是否适用于基本插图?

标签: excel excel-formula


【解决方案1】:

假设 - 您的数据位于 B2:E5 范围内 - 目标日期选择单元格 H2 - J列中的结果

第 1 步 - 确定目标列

要使用 Match 来确定你想要哪一列

MATCH(H2,A2:E2,0)

第 2 步 - 从列中找到其中包含 1 的行

将为此使用 AGGREGATE 函数。它将对所有行执行类似数组的计算。您将行号除以搜索条件。所有错误值都会导致除以零错误,并且会被忽略,只留下您要查找的内容。

AGGREGATE(14,6,row(B3:B5)/(index(B3:E5,0,MATCH(H2,A2:E2,0))=1),A1)

第 3 步 - 从相应行中提取名称

使用 INDEX 引用您的名称列表,将其提供您感兴趣的行号。

INDEX(B:B,AGGREGATE(15,6,ROW($B$3:$B$5)/(INDEX($B$3:$E$5,0,MATCH($H$2,$B$2:$E$2,0))=1),ROW(A1)))

如果您将其包装在 IFERROR 函数中,以便在匹配名称用完时显示“”而不是错误消息。您可以将以下公式放入J2并复制下来:

=IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($B$3:$B$5)/(INDEX($B$3:$E$5,0,MATCH($H$2,$B$2:$E$2,0))=1),ROW(A1))),"")

调整范围以适合您的数据。如果要匹配列标题的日期,请确保日期格式与 H2 中的搜索值相同。即,如果它是存储为文本的日期,它们都必须是存储为文本的日期。如果它是一个 excel 序列日期整数,那么它们都需要是序列日期整数。

【讨论】:

    猜你喜欢
    • 2022-11-18
    • 2022-01-15
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多