0

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

有一些文章/问题概述了一些不同的方法来做到这一点(例如,如何在 Excel 中计算具有两个条件的唯一值),但由于某种原因,似乎没有一个对我有用(这可能是因为我'我做错了什么)。

我在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' 和值为 'Mar 2018' 的 'Col B - Date' 的唯一 # of 'Col C - ID ' 应该是 3。

4

1 回答 1

1

使用多个条件进行计数的最简单方法是使用 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 的澄清之后,您需要一个辅助列来连接三列。假设您的数据从 A2 开始,您将把它放在 D2 中(如果您还没有每行的唯一标识符):

=A2&B2&C2

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

=SUMPRODUCT(--(A2:A20=$A$1),--(B2:B20=$B$1),(1/COUNTIF(D2:D20,D2:D20)))
于 2019-05-10T19:42:26.563 回答