我一直在处理一个包含 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))
这是最棘手的部分。我将复选框的“true”乘以 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)))
这很丑陋,而且加载速度非常慢。有没有办法创建一个函数范围来处理多行上的相同检查,并将其压缩为单个公式?