Excel 如何根据名称和Id计算C列中的“否”?

Excel 如何根据名称和Id计算C列中的“否”?,excel,vba,excel-formula,excel-2010,Excel,Vba,Excel Formula,Excel 2010,我有三个专栏 -----A-----B-----C----- ---Name----ID---Report 在A列中,我可以重复 在B列中,我有ID可以对不同的名称使用相同的ID重复 在C列中,对于相同的ID,可以重复Yes和NoCan,但不能重复NO 我需要帮助来计算JohnColumn A的C列中的No的数量,但如果B列有重复的ID,则只计算一次 我可以通过过滤器和其他东西来做这件事,但我只需要用公式来做 这是我在Dropbox链接上工作的文件 这就是我目前得到的 =COUNTIF(A1

我有三个专栏

-----A-----B-----C-----
---Name----ID---Report
在A列中,我可以重复 在B列中,我有ID可以对不同的名称使用相同的ID重复 在C列中,对于相同的ID,可以重复Yes和NoCan,但不能重复NO

我需要帮助来计算JohnColumn A的C列中的No的数量,但如果B列有重复的ID,则只计算一次

我可以通过过滤器和其他东西来做这件事,但我只需要用公式来做

这是我在Dropbox链接上工作的文件

这就是我目前得到的

=COUNTIF(A1:A1000,"*" & "John" & "*")

我的想法是用公式=COUNTIFSA:A,=&A2,B:B,=&B2,C:C,=&C2添加D列。这将为您提供每行的副本数。如果一行返回3,则表示该确切配置还有两个其他实例


接下来,创建一个新表,用于测试,我在G列和H列中进行了测试。G列从G2开始编号为1、2、3等。名称是单元格H1中的标题和引用,在本例中为John。然后把这个公式放在单元格H2:=COUNTIFSA:A,=&H$1,C:C,=No,D:D,=&G2/G2中,并向下拖动它。它本质上是计算每个1个副本、2个副本和3个副本的实例,这些副本实际上可能有用。然后把H列求和,你就应该有你的答案了。

我的想法是把D列加上公式=COUNTIFSA:A,=&A2,B:B,=&B2,C:C,=&C2。这将为您提供每行的副本数。如果一行返回3,则表示该确切配置还有两个其他实例


接下来,创建一个新表,用于测试,我在G列和H列中进行了测试。G列从G2开始编号为1、2、3等。名称是单元格H1中的标题和引用,在本例中为John。然后把这个公式放在单元格H2:=COUNTIFSA:A,=&H$1,C:C,=No,D:D,=&G2/G2中,并向下拖动它。它本质上是计算每个1个副本、2个副本和3个副本的实例,这些副本实际上可能有用。然后只需对H列求和,就可以得到您的答案。

这似乎非常接近您要做的事情

=SUMPRODUCT((A2:A1000="John")*(C2:C1000="No")*(IF(FREQUENCY(B2:B1000,B2:B999)>0,TRUE)))
有一个缺陷的频率,因为它忽略了最后一行。 如果我将频率公式更改为FREQUENCYB2:B1000,B2:B1000,它将出错,因为它返回10个结果,而不是所需的9个结果

编辑

扩展其他范围可能比缩短存储箱阵列更好

=SUMPRODUCT((A2:A1001="John")*(C2:C1001="No")*(IF(FREQUENCY(B2:B1001,B2:B1000)>0,TRUE)))

这似乎非常接近你正在尝试做的事情

=SUMPRODUCT((A2:A1000="John")*(C2:C1000="No")*(IF(FREQUENCY(B2:B1000,B2:B999)>0,TRUE)))
有一个缺陷的频率,因为它忽略了最后一行。 如果我将频率公式更改为FREQUENCYB2:B1000,B2:B1000,它将出错,因为它返回10个结果,而不是所需的9个结果

编辑

扩展其他范围可能比缩短存储箱阵列更好

=SUMPRODUCT((A2:A1001="John")*(C2:C1001="No")*(IF(FREQUENCY(B2:B1001,B2:B1000)>0,TRUE)))

您可以使用这样一个公式:

=SUMIFFREQUENCYIFA2:A200=John,IFC2:C200=No,B2:B200,B2:B200,1

这是一个需要用CTRL+SHIFT+ENTER确认的数组公式


对于您的示例,它给出了3-请注意,它要求B列数据为数字,这里似乎就是这种情况….

您可以使用如下公式:

=SUMIFFREQUENCYIFA2:A200=John,IFC2:C200=No,B2:B200,B2:B200,1

这是一个需要用CTRL+SHIFT+ENTER确认的数组公式


你的例子是3-注意,它要求B列数据是数字的,这似乎是这里的情况…

这是我到目前为止提出的=COUNTIFA1:A1000,*&John&*这是我到目前为止提出的=COUNTIFA1:A1000,*&John&*我认为你不能用这种方法保证正确的结果,即使忽略最后一行问题,由于条件不在频率函数内-我认为情况需要如此,并根据我的建议解决任何最后一行问题。对于B列中的任何重复ID,频率返回FALSE,SUMPRODUCT将消除任何重复ID。这也消除了对数组公式的需要该方法的问题是,Rick,频率部分仅针对B列中每个重复ID的第一个实例返回TRUE……但可能John和No不会在第一个实例所在的行上出现……但它们会在后续实例上出现,在这种情况下,您的公式不会计算该ID,当它的出现次数与标准匹配时-如果我使用您的公式表示John和Yes,例如,在给定的数据上,当结果应该是11时,我得到8,我认为您无法用这种方法保证正确的结果,即使忽略最后一行问题,由于条件不在频率函数内-我认为情况需要如此,并根据我的建议解决任何最后一行问题。对于B列中的任何重复ID,频率返回FALSE,SUMPRODUCT将消除任何重复ID。这也消除了对数组公式的需要该方法的问题是,Rick,频率部分仅针对B列中每个重复ID的第一个实例返回TRUE……但可能是John和 第一个实例所在的行上不会出现“否”,但在随后的实例上会出现“否”,在这种情况下,当该ID的出现次数与条件匹配时,您的公式将不计算该ID-如果我对John使用您的公式,并且是,例如,在给定数据上,当结果应为11时,我得到8