Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在excel中使用countifs_Excel - Fatal编程技术网

在excel中使用countifs

在excel中使用countifs,excel,Excel,我在使用这个函数时遇到了一些问题。问题是无论我做什么,它只计算0。 所以我在excel中为随机的人准备了3张不同的表格,其中包含不同的信息。我需要做的是,将不同的列与其中包含某种标准的信息进行比较 例如: 在表1中有一列是他们的工资 在表2中,有您在当前公司可获得的最高工资,以及“是/否”列(如果他们是否纳税) 在表3中有两列,分别列出每个人支付的费用和他们拥有的贷款 因此,我需要做的是在表4中计算他们中有多少人的工资比最高工资少50美元或多50美元,支付的贷款比他们的费用多80美元,并且正在纳

我在使用这个函数时遇到了一些问题。问题是无论我做什么,它只计算0。 所以我在excel中为随机的人准备了3张不同的表格,其中包含不同的信息。我需要做的是,将不同的列与其中包含某种标准的信息进行比较

例如:

在表1中有一列是他们的工资

在表2中,有您在当前公司可获得的最高工资,以及“是/否”列(如果他们是否纳税)

在表3中有两列,分别列出每个人支付的费用和他们拥有的贷款

因此,我需要做的是在表4中计算他们中有多少人的工资比最高工资少50美元或多50美元,支付的贷款比他们的费用多80美元,并且正在纳税


我用countif和countifs尝试了不同的方法,但它总是显示0。谢谢您的时间。

选项1-高级过滤器

为了做到这一点,您可以考虑一个有用的替代选项。。。。高级过滤器。高级过滤器确实要求您将数据聚合到一个页面上,但随后允许您查询多个条件。这里是指向的高级过滤器部分的链接。如果你不想仅仅使用基本公式,这将是一个很好的起点

如果您确实走这条路线,请按照网站上的步骤进行操作:

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

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

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

选项2-数据透视表

您可能会在这里看到的另一个选项是使用透视表,尽管同样,您的数据必须在一个工作表上聚合在一起。这些都是我每天在工作场所使用的非凡的工具,我可以准确地完成你想要的东西

选项3-使用Visual Basic


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

< P> <强>不针对点。< /强>无论如何,我个人认为这不是最好的答案。

在某个地方可能会有一个优雅的解决方案,或者其他人可以提出。但是,我建议您在这一点上采取长路线,并设置帮助器列

您可以进行三次单独检查和一次最终检查:

  • 要比较最高工资和员工当前工资,请检查
    ABS
    差值是否在50以内
  • 税务状态是一个简单的
    IF
    或平等性检查
  • 对于贷款,只需简单检查:
    (贷款费)>=80
  • 将以上三者的真值相乘
  • 如果每个工作表中都有您的员工姓名,那么重构
    Sheet4
    中的表只需
    VLOOKUP

    假设是一个重建的表,下面是我的尝试:

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

    G2
    H2
    I2
    J2
    的公式如下:

    G2: =ABS(C2-B2)<=50
    H2: =D2="Y"
    I2: =(F2-E2)>=80
    J2: =G2*H2*I2
    
    G2:=ABS(C2-B2)=80
    J2:=G2*H2*I2
    
    显然,
    J
    列中的值之和就是您的计数。或者您可以只计算列中有多少个
    1
    。方法基本上取决于您

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


    请随意下载我的工作表样本。

    我认为有一个公式,例如:

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

    =COUNTIFS(G:G,“>”&80,D:D,1,C:C,“>”&max_sal+50)+COUNTIFS(G:G,“>”&80,D:D,1,C:C,“
    COUNTIFS
    如果不做一些修改,将无法使用它,因为您需要根据某个值(最大+/-50)检查每个人的工资。使用辅助单元格或相当复杂的使用
    SUMPRODUCT
    ,这样做更好。那么我如何使用这些辅助单元格呢?@pnuts:我也这么想,但我认为出于开销的考虑,辅助列或单元格会对OP更有利。不过,我不知道。我从来都不喜欢公式。如果是VBA,这很简单。:DMake我甚至回答这个问题的原因是,我现在有一个类似的数据集,我尝试了很多选择,但采用了一种非常肮脏的多字典方法,针对每个条件运行,“去掉”不符合下一个标准的项(实际上,这只是创建一个新字典).然而,经过几个小时的良好使用,我发现尽管它是完美的,但我真的无法从中分离出任何有意义的数据。因此,我只是采用了与上述类似的多公式方法。:)