Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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 如何仅在其他两列与特定值匹配时计算唯一值_Excel_Excel Formula_Excel 2010 - Fatal编程技术网

Excel 如何仅在其他两列与特定值匹配时计算唯一值

Excel 如何仅在其他两列与特定值匹配时计算唯一值,excel,excel-formula,excel-2010,Excel,Excel Formula,Excel 2010,每当位置和日期等于特定值时,我尝试计算不同的ID值 有一些文章/问题概述了一些不同的方法,例如,但出于某种原因,似乎没有一篇适合我,这可能是因为我做错了什么 我的excel表格是这样设置的 +------------------+--------------+------------+ | Col A - Location | Col B - Date | Col C - ID | +------------------+--------------+------------+ |

每当位置和日期等于特定值时,我尝试计算不同的ID值

有一些文章/问题概述了一些不同的方法,例如,但出于某种原因,似乎没有一篇适合我,这可能是因为我做错了什么

我的excel表格是这样设置的

+------------------+--------------+------------+
| Col A - Location | Col B - Date | Col C - ID |
+------------------+--------------+------------+
|         A        |   Mar 2018   |      1     |         
|         B        |   Mar 2018   |      2     |
|         C        |   Mar 2018   |      3     |
|         A        |   Mar 2018   |      4     |
|         B        |   Mar 2018   |            |
|         C        |   Mar 2018   |      5     |
|         A        |   Mar 2018   |      6     |
|         B        |   Apr 2018   |      1     |
|         C        |   Apr 2018   |      2     |
|         C        |   Apr 2018   |      4     |
|         C        |   Mar 2018   |      5     |
|         A        |   Mar 2018   |      1     |
|         B        |   Mar 2018   |      5     |
|         B        |   Mar 2018   |      8     |
|         B        |   Mar 2018   |            |
|         C        |   Mar 2018   |      1     |
|         B        |   Mar 2018   |      3     |
+------------------+--------------+------------+
我在网上找到了4种不同的计算方法,并根据我的数据进行了修改:

Calc 1 (run by just hitting ENTER):
=COUNTIFS(A:A, "A",C:C,C:C,B:B, "Mar 2018")

Result = 2


Calc 2 (running by hitting CTRL + SHFT + ENTER):
=SUMPRODUCT( ( (C:C <> "") * (A:A = "A") * (B:B = "Mar 2018") ) / COUNTIFS(C:C,C:C  & "",A:A, "A",B:B, "Mar 2018"))

Result = 0


Calc 3 (running by hitting CTRL + SHFT + ENTER):
=SUM(IF(FREQUENCY(IF(C:C<>"", MATCH(C:C,C:C,0)),ROW(C:C)-ROW(C2)+1),1))

Result = 0


Calc 4 (running by hitting CTRL + SHFT + ENTER):
=SUM(IF(FREQUENCY(IF((A:A="A")*(B:B="Mar 2018")*(C:C<>""),MATCH(C:C,C:C,0)),ROW(C:C)-MIN(ROW(C:C))+1),1))

Result = 0 
(This one keeps giving an error message about running out of resources while trying to calculate)

我试图找到的实际结果是,对于值为“A”的“Col A-Location”和值为“2018年3月”的“Col B-Date”,Col C-ID的唯一值应为3。

使用多个标准进行计数的最简单方法是使用SUMPRODUCT:

=SUMPRODUCT(--(A1:A20="A"),--(B1:B20=DATE(2018,3,1)),--(C1:C20=3))
双重否定-将正确/错误答案转换为1或0,以便sumproduct完成其工作

我建议你限制你的范围,也就是说,不要像A:A那样使用整列,因为这会大大降低公式的速度。此外,根据您的条件使用锁定的引用单元格可能更容易。如果在第一行中输入条件,则可以使用:

=SUMPRODUCT(--(A2:A20=$A$1),--(B2:B20=$B$1),--(C1:C20=$C$1))
编辑

按照beatrixb的说明,您需要一个helper列来连接这三个列。确保您的数据从A2开始,如果您还没有每行的唯一标识符,您可以将其放在D2中:

=A2&B2&C2
并在另一个单元格中使用此公式,根据两个条件返回唯一值的数量:

=SUMPRODUCT(--(A2:A20=$A$1),--(B2:B20=$B$1),(1/COUNTIF(D2:D20,D2:D20)))

谢谢,这让我更接近了,但不是100%。我不希望C1:C20等于任何特定值,我想要的是计算C列的唯一ID s,因此在我的示例中,给定A列='A'和B列='2018年3月',有4行符合包含ID 1、4、6、1的条件,然后由于1是重复的,ID的唯一计数将是3。有没有办法将countif作为最后一个sumproduct变量?