忽略Excel公式中的隐藏表行

时间:2016-05-11 04:11:08

标签: excel excel-formula

晚安。

我试图让我的公式忽略过滤表中的隐藏行。我尝试过这里展示的一些技巧,但我还没有成功。

我从BigFix(网络管理工具)获得的CSV看起来像: [Table]

applications列列出了同一单元格中的应用程序。因此,当我执行计数功能来识别问题时,我必须使用通配符(我在另一个tab中搜索结果)。

enter image description here

=COUNTIF('Input Data'!C:C,"*"&Results!A2&"*")

我希望能够在第一个标签上过滤表格,并在第二个标签页上准确显示公式结果。

有什么想法吗?

更新: 我觉得更多的信息会有所帮助。我之所以想要"结果"要自动更新的标签是我计划从该标签上的信息构建图表。我希望能够在“输入数据”中过滤表格。仅包括部门A,并将图表自动更新为部门A的信息。

我正在使用的excel文件最多有一千个条目,我试图获取可以复制/粘贴的图表,以尽可能高效地投放到演示文稿中。

2 个答案:

答案 0 :(得分:1)

使用Countifs功能并将过滤条件添加到Countifs,而不是过滤源数据。

答案 1 :(得分:1)

=SUMPRODUCT(SUBTOTAL(3,OFFSET('Input Data'!C:C,ROW('Input Data'!C:C)-MIN(ROW('Input Data'!C:C)),,1))*(ISNUMBER(SEARCH(A2,'Input Data'!C:C))))

在上面的公式中,将C:C限制为实际数据范围,或使用命名范围来识别实际数据范围。

  

修改

上面的公式应该被替换为103而不是Jeep指出的3

=SUMPRODUCT(SUBTOTAL(103,OFFSET('Input Data'!C:C,ROW('Input Data'!C:C)-MIN(ROW('Input Data'!C:C)),,1))*(ISNUMBER(SEARCH(A2,'Input Data'!C:C))))

在上面的公式中,将C:C限制为实际数据范围,或使用命名范围来识别实际数据范围。

  

根据OP的请求添加说明。

在上面的公式中使用Sumproduct()Subtotal()Offset()Min()Row()IsNumber()搜索()函数组合,用于到达预期结果。

行() - 将获取给定范围的行号

Min() - 将获得给定数字的最小值

偏移() - 用于将引用重定向到给定范围的每个单元格。

小计() - 用于查找重定向引用的(非)隐藏状态。

搜索() - 用于查找给定范围内的特定文本(不区分大小写)将导致数字或错误。

IsNumber()用于检查搜索是返回Number还是error。所以Isnumber将返回布尔值True / False作为结果。

Column-C Column-D

过滤数据

1

b 1

1

a 2

a 2

以上数据从第一行开始,第一行包含标题。假设我用1过滤D列。使用下面的公式将得到2。

= SUMPRODUCT(SUBTOTAL(103,OFFSET('输入数据'!C2:C6,行('输入数据'!C2:C6)-MIN(行('输入数据'!C2:C6)),1 ))*(ISNUMBER(搜索(“a”,“输入数据”!C2:C6))))

行('输入数据'!C2:C6)= {2; 3; 4; 5; 6}

MIN(行('输入数据'!C2:C6))= 2

ROW('输入数据'!C2:C6)-MIN(行('输入数据'!C2:C6))应读作 {2; 3; 4; 5; 6} -2 = {0; 1; 2; 3; 4}

OFFSET('输入数据'!C2:C6,行('输入数据'!C2:C6)-MIN(行('输入数据'!C2:C6)),, 1)='输入数据'! C2,'输入数据'!C3,'输入数据'!C4,'输入数据'!C5,'输入数据'!C6

SUBTOTAL(103,OFFSET('输入数据'!C2:C6,行('输入数据'!C2:C6)-MIN(行('输入数据'!C2:C6)),1))< strong>应该被理解为

SUBTOTAL(103,'输入数据'!C2,'输入数据'!C3,'输入数据'!C4,'输入数据'!C5,'输入数据'!C6)= {1; 1; 1; 0; 0} 小计()到达每个(单元格)引用的可见状态。

SEARCH(“a”,“输入数据”!C2:C6)= {1; #VALUE !; 1; 1; 1}

ISNUMBER(搜索(“a”,“输入数据”!C2:C6))应该被理解为 ISNUMBER({1; #VALUE !; 1; 1; 1})= {TRUE; FALSE; TRUE; TRUE; TRUE}

SUBTOTAL(103,OFFSET('输入数据'!C2:C6,行('输入数据'!C2:C6)-MIN(行('输入数据'!C2:C6)),1))= {1; 1; 1; 0; 0}

(ISNUMBER(SEARCH(“a”,“输入数据”!C2:C6)))= {TRUE; FALSE; TRUE; TRUE; TRUE}

{1; 1; 1; 0; 0} * {TRUE; FALSE; TRUE; TRUE; TRUE} = {1; 0; 1; 0; 0}

SUMPRODUCT({1; 0; 1; 0; 0})= 2

使用Sumproduct()来避免数组输入以及执行数组公式任务(循环遍历单元格区域)和Sumproduct()将产生传递值的总和。