【问题标题】:countif using the same range of cells across mulitple worksheetscountif 在多个工作表中使用相同范围的单元格
【发布时间】:2016-07-20 03:18:51
【问题描述】:

我的工作簿在 1、2、3 等月份的每一天都有一个单独的工作表。

在每个工作表单元格 C8:C34 中包含可能重复的数字 (0-999)。

我想计算一个特定数字出现的总次数,我已经用连续的 countif 语句来做这个,但这似乎是一个非常冗长和混乱的方法。有没有更简单的方法来实现这一点?

当前代码:

=(COUNTIFS('1'!$C$8:$C$34,C1)+(COUNTIFS('2'!$C$8:$C$34,C1)))

【问题讨论】:

    标签: excel excel-formula countif


    【解决方案1】:

    如果总张数已知,则

    =COUNTIF('1'!$C$8:$C$34,C1)+COUNTIF('2'!$C$8:$C$34,C1)+COUNTIF('3'!$C$8:$C$34,C1)
    

    可以替换为

    =SUMPRODUCT(COUNTIF(INDIRECT({"1";"2";"3"}&"!$C$8:$C$34"),C1))
    

    {"1";"2";"3"} 是一个带有工作表名称的数组文字。 SUMPRODUCT 将隐式地作为一个数组公式工作,并将这个数组字面量作为“1”; “2”; “3”一个接一个,将在INDIRECT 中使用不同的工作表名称执行3 个COUNTIF

    如果工作表名称是正在进行的数字,那么这也可能是:

    =SUMPRODUCT(COUNTIF(INDIRECT(ROW($1:$3)&"!$C$8:$C$34"),C2))
    

    ROW($1:$3) 在数组上下文中将是 {1;2;3}。与& 连接时,数字将隐式转换为字符串。

    【讨论】:

    • '=SUMPRODUCT(COUNTIF(INDIRECT(ROW($1:$3)&"!$C$8:$C$34"),C2))' 就像一个魅力,我真的很感激解释它是如何工作的。
    【解决方案2】:

    两个多计数? 不好, 相反,请使用数据透视表。

    说明: 假设您的 Excel 工作表如下所示:

    在“插入”选项卡中选择“插入数据透视表”, 在数据透视表字段(右列)中将“标签”放在列中 并将标签放入值中(只需拖放)。将值更改为“标签计数”而不是标签总和, 故事就这样结束了。

    count if (and it's bestfriend Sum if) 是昂贵的操作,适度使用它们。数据透视表在经过优化的意义上很便宜。

    结果如下所示:

    【讨论】:

    • 我认为问题在于需要使用来自多张纸的数据来计算数字。如果我们将所有数据都放在一张纸上,您的答案将有效。
    • 在此表下方创建另一个数据透视表 - 每张表。然后把它们都算在一起。当然,或者,尝试将它们分组到一个电子表格中;这是一项艰巨的工作,但这是最佳实践。
    • 谢谢 Hila,但听起来我只是用多个数据透视表替换了多个 countif 语句,同时失去了一些格式化功能。我的号码实际上是酒店房间号,目前的设置允许我按楼层(第 1 位)和类型(最后 2 位)组织房间
    • 这样想,将 Left (Label, 1) 和 Right (label, 2) 作为列添加到原始表格中,这样您就可以在不丢失功能的情况下进行更多透视。
    猜你喜欢
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    相关资源
    最近更新 更多