考虑一个如下所示的电子表格:
我希望能够在左列中过滤名称 1,并使其看起来像这样:
是的,我知道最简单的答案是过滤名称 1 和标题,但其他使用这个电子表格的人似乎不明白这一点。那么,我怎样才能让他们万无一失,让他们无法过滤掉左列中有标题的行呢?
请注意:除了上述简化示例之外,还有其他因素可以解释为什么它们会向下走而不是向横走。
答案1
嗯,首先,这不是 Excel 期望的数据,这就是为什么您很可能必须使用一些 VBA 宏才能按照您描述的方式解决这个问题。
Excel 希望这些数据按如下方式排列:
标题;指标 1;指标 2;指标 3
当原始数据按照此顺序排列时,创建您所要求的结果会更容易。
但是,要将其作为宏来解决,您必须获取您的姓名列表,创建一些对话框来选择姓名,创建基本宏,该宏将采用姓名添加标题并自动创建过滤器,并创建一个按钮或快捷键以将其分配给宏。
另一种方法是使用高级过滤器:http://office.microsoft.com/en-us/excel-help/filter-by-using-advanced-criteria-HP005200178.aspx
更新行为存在一些问题,但我设法通过以下设置运行它:
Table1:
A | B | C
-----------------------------------------------
Header | Metric 1 | Name1 (this is your filter)
Name 1 | 100 |
Name 2 | 300 |
Name 3 | 200 |
Table2:
A
----------------
Header
="=" & Table1!C1
'=Header
然后,您为 Table1!A1:B4 设置一个高级过滤器,并以 Table2!A1:A3 为条件。
我想说这些是你的选择。
答案2
我建议改变你的数据呈现设计
或者至少使用带有类似公式的第三列,这样用户即使只过滤名称,也能看到指标的名称=IF(A2="Header";B2;C1)
答案3
最好的方法是将其设为命名范围或可扩展范围的表,并引用范围而不是指定的声明范围。
话虽如此:
Range("Table2").AutoFilter 1, "header", xlOr, "Name1", False
如果您只有两个基本条件,这种方法是可行的。如果您需要两个以上的条件,可能需要重新构建您的 NamedRange/Table,以便您可以过滤掉不同的字段/列。
编辑于 2012-10-15 @ 15:29
根据我个人的需要做了一些进一步的研究,发现如果你有多个(超过 2 个)标准,你也可以这样做,包括:
Range("Table2").AutoFilter Field:=1, Criteria1:=Array("val1", "val2"), Operator:=xlFilterValues
答案4
一个简单的(虽然不完美)解决方案 - 在“Header”一词后,只需输入一个空格,然后输入“Metric 1”,然后将 Metric 1 文本的颜色更改为与背景相匹配...在本例中为白色。它变得不可见,但如果选中,它仍会显示在过滤器中。您只需记住在过滤器中勾选“Header”和“Header Metric 1”框...因此不完美。