【问题标题】:Google Sheets - How to Combine Filter Function with Filter ViewGoogle 表格 - 如何将过滤器功能与过滤器视图结合使用
【发布时间】:2020-10-01 23:23:13
【问题描述】:

我一直在处理一个超过 100 行的电子表格,并找到了一种巧妙的方法来合并一个“隐藏”复选框,该复选框将隐藏 C 列与框旁边指定的特定值(建筑类型)匹配的任何行。为此,我首先创建了一个这样的函数:=FILTER(Data!A1, OR(Data!$C1<>$O$2, $P$2)) 并将其拖到单独工作表中的每一行和每一列。这读作“如果数据中该行中的相应列 C 与建筑物类型不匹配,或者选中复选框,则显示当前单元格。这样,当建筑物类型匹配时,整行将被隐藏,并且该框未选中。A1 分别调整为每一行,$C1 引用了建筑物的类型,$O$2 引用了可能隐藏的目标类型,$P$2 是复选框。

问题 #1:这在数百个单元格中创建了很多公式,当找不到建筑物类型时,它会在整行中显示 #N/A。过滤视图能够隐藏这些值,但每次我想隐藏或取消隐藏另一种建筑类型时都必须重新设置这些值很不方便。

我的修复尝试:我再次使用过滤器功能从一个单元格重新创建整个工作表,隐藏适当的行,使用此:=FILTER(Data!A2:J191, ARRAYFORMULA((Data!$C2:C191<>$O$2)+(Data!D2:D191*$P$2)) 这是 hacky 部分。我将复选框的“真”乘以 D 列中的任意正数值数组,将其与每个建筑类型值“或”,以实现与以前相同的目标,但针对每个单元格。

出现了问题 #2:当我得到漂亮的工作表时,我无法通过过滤视图对其进行排序,否则会抛出错误并且什么也不显示。我正在对原始选项卡进行排序,但打算完全忽略它。那么如何结合这两个过滤视图和过滤函数来创建一个可以排序和隐藏行的漂亮电子表格?

额外问题 #3:要添加更多按钮,我的公式是这样的:=FILTER(Data!A1:J191, ARRAYFORMULA((Data!$C1:C191<>$O$2)+(Data!D2:D192*$P$2)), ARRAYFORMULA((Data!$C1:C191<>$O$3)+(Data!D2:D192*$P$3)), ARRAYFORMULA((Data!$C1:C191<>$O$4)+(Data!D2:D192*$P$4)), ARRAYFORMULA((Data!$C1:C191<>$O$5)+(Data!D2:D192*$P$5)), ARRAYFORMULA((Data!$C1:C191<>$O$6)+(Data!D2:D192*$P$6)), ARRAYFORMULA((Data!$C1:C191<>$O$7)+(Data!D2:D192*$P$7)), ARRAYFORMULA((Data!$C1:C191<>$O$8)+(Data!D2:D192*$P$8)), ARRAYFORMULA((Data!$C1:C191<>$O$9)+(Data!D2:D192*$P$9))) 这很难看,加载速度也很慢。有没有办法创建一个函数范围来处理对多行的相同检查,并将其压缩成一个公式?

【问题讨论】:

  • 更新:我找到了一种解决方法,方法是在第二行添加一个复选框来处理排序,使选中框上的值范围为 1-11,未选中为 0,抛出一个排序函数那个怪物函数并添加 A2、False、B2、False 等等等,但是出于对所有数字的热爱,有人需要告诉我如何使这更有效。
  • 请提供样张。
  • 对不起,我是这个网站的新手。指向它的链接会起作用吗?我将研究如何提供样本。现在,这里有一个链接。 docs.google.com/spreadsheets/d/…

标签: sorting google-sheets show-hide filterfunction google-sheets-filter-view


【解决方案1】:

这是另一个怪物(这个重复较少):

=QUERY(
  {IGNORE!A2:J, IGNORE!P2:P},
    "SELECT * "
  & "WHERE Col3 is not null "
  & IF(COUNTIF(P2:P9, False) = 0, "", "AND NOT Col3 MATCHES '^" & JOIN("$|^", IFNA(FILTER(O2:O9, P2:P9 = False))) & "$' ")
  & IF(COUNTIF(A2:K2, ">0") = 0, "", "ORDER BY Col" & JOIN(", Col", IFNA(FILTER(COLUMN(A2:K2) & IF(COLUMN(A2:K2) = 1, "", " DESC"), A2:K2)))),
  0
)

您的复选框应该保留。第二行可以只有真/假值,不需要列号(需要进行简单的更改COUNTIF(A2:K2, ">0") -> COUNTIF(A2:K2, True))。现在也可以进行后续排序(但仅按列的实际顺序:如果选中 1、3、4,则它将首先按 1 排序,然后按 2,然后按 4)。您可以在右侧放置另一个关于排序的配置表,您可以在其中选择要排序的所有列、它们的相互顺序以及它们的 desc/asc。

编辑:添加了IFNA,因此FILTER 不会返回错误,将多个ANDS 更改为MATCHES 和简单的正则表达式。

【讨论】:

  • 太棒了!我不知道查询功能。这是扩展类型和行的更易于管理的部分。正是我需要的。非常感谢!
  • @BraxtonIstace 稍微修正了解决方案。
  • 您以前的解决方案似乎有效,但是当我尝试更新版本时,它并没有隐藏所有应该隐藏的行。我会看看这两个,看看我能同时弄清楚什么。感谢您付出的努力!
  • 对不起,有一个错字。现已修复。
  • 谢谢你杀死了这个怪物。我希望我能提供的不仅仅是一个赞成票、一个复选标记和我的感激之情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
  • 1970-01-01
  • 2019-10-15
  • 1970-01-01
相关资源
最近更新 更多