【问题标题】:Using countifs in excel在excel中使用countifs
【发布时间】:2014-04-10 19:08:58
【问题描述】:

我在使用这个函数时遇到了一些问题。不管我做什么,它只计为 0。 因此,我在 excel 中获得了 3 张不同的工作表,其中包含针对随机人员的不同信息。我需要做的是,将不同的列与其中包含某种标准的信息进行比较。

例如:

在 sheet1 中有一栏是他们的薪水。

在 sheet2 中有最大值。您可以在当前公司获得的薪水,以及是否纳税的“是/否”列。

在工作表 3 中有 2 列,分别显示每个人支付的费用和他们拥有的贷款。

所以我需要在工作表 4 中计算有多少人的工资低于或高于最高工资 50 美元。一,比他们的费用多支付 80 美元的贷款,并且正在纳税。

我用 countif 和 countifs 尝试了不同的东西,但它总是显示为 0。感谢您的宝贵时间。

【问题讨论】:

  • COUNTIFS 不会在没有修改的情况下使用它,因为您需要根据某个值(最大值 +/- 50)检查每个人的薪水。最好使用辅助单元格或相当复杂地使用 SUMPRODUCT
  • 那么我该如何使用这些辅助单元格呢?
  • @pnuts:以类似的方式考虑它,但我认为为了开销,辅助列或单元格将使 OP 受益更多。不知道,不过。我从来都不是公式的粉丝。如果是 VBA,这是小菜一碟。 :D

标签: excel


【解决方案1】:

选项 1 - 高级过滤器

为了做到这一点,您可能会查看一个有用的替代选项......高级过滤器。高级过滤器确实需要您在一个页面上将数据聚合在一起,然后让您能够查询多个条件。这是Microsoft Excel 2010 的高级过滤器部分的链接。如果您想超越仅使用基本公式,这将是一个很好的起点。

如果您确实沿着这条路线走,请按照网站上的说明进行操作:

  • 在电子表格的顶行中插入您选择的各种条件,并在列表范围内指定这些行

    • 将条件范围设置为在单个工作表上保存所有数据的位置

    • 运行过滤器并查看结果数据。您可以轻松计算该缩减数据集中的记录数。

选项 2 - 数据透视表

您可能会在此处查看的另一个选项是使用数据透视表,但同样,您的数据必须在一个工作表上汇总在一起。 Pivot tables and pivot charts 是我每天在工作场所使用的非凡工具,可以完全满足您的需求。

选项 3 - 使用 Visual Basic

如果您真的很喜欢冒险,您可以选择尝试使用 Visual Basic 代码编写解决方案。这将为您提供完美的控制,因为您可以准确指定每个条件要查看的范围。不幸的是,您需要了解 VB 代码才能使用此解决方案。有一些优秀的在线资源可以帮助解决这个问题。

【讨论】:

    【解决方案2】:

    不是为了积分。我个人并不认为这是最好的答案。

    在某个地方或其他人可以提供一个优雅的解决方案。不过,我建议您在这条路线上走很长一段路,并设置帮助列。

    您可以进行三项单独检查和最后一项检查:

    1. 最高工资与员工当前工资的比较,检查ABS的差值是否在50以内。
    2. 税务状态是一个简单的IF 或平等检查。
    3. 对于贷款,只需简单检查一下:(LOAN-FEE) >= 80
    4. 将以上三个的真值相乘。

    如果您的员工姓名在每张表中,那么在Sheet4 中重构表格就是VLOOKUP 的简单问题。

    假设重建表,这是我的尝试:

    在另一个选项卡中打开图像以清楚地看到它。

    G2H2I2J2 的公式如下:

    G2: =ABS(C2-B2)<=50
    H2: =D2="Y"
    I2: =(F2-E2)>=80
    J2: =G2*H2*I2
    

    显然,J 列中的值的总和就是您的计数。或者您可以只计算列中有多少1。该方法基本上取决于您。

    这样做的好处是您可以立即看到谁有资格参加哪项检查。任何Check 列上的简单过滤器都可以隔离特定员工。从某种意义上说,拥有辅助列所提供的准确度远远超过公式所能提供的准确度。

    请随时下载我的示例工作表here

    【讨论】:

    • 有道理。我什至回答这个问题的原因是我现在有一个类似的数据集,我尝试了很多选项,但采用了一种非常肮脏的多字典方法,针对每个条件运行,“脱落”不符合下一个条件的项目标准(它只是创建一个新字典,真的)。然而,经过几个小时的良好使用,我发现尽管它很完美,但我真的无法隔离任何有意义的数据。所以我只是采用了类似于上面的多公式方法。 :)
    【解决方案3】:

    我认为一个公式如:

    =COUNTIFS(G:G,">"&80,D:D,1,C:C,">"&max_sal+50)+COUNTIFS(G:G,">"&80,D:D,1,C:C,"<"&max_sal-50)  
    

    可以使用 Sheet3 中的帮助列来区分贷款和费用、税收标志 1(支付)和 0(不支付)以及 Sheet4 中的数据透视表,该数据透视表由多个合并范围构成,列标题为 Salary、Tax 、费用、贷款和差异(按此顺序)从 C4 开始 - 但如果没有样本数据,我并不热衷于测试。

    而且,和其他人一样,我会采用辅助列方法。

    【讨论】:

      猜你喜欢
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多