如何统计所有子类别,但如果主类别相同则只统计一次

问题描述 投票:0回答:1
Company     Brands  Made in CHI Made in TW   Made in USA
1   AA          Apple   6           0            1
2   BB          BoyO    0           1            0
2   BB          BoyX    1           0            0
3   CC          Car     17          1            0
4   DD          DogO    4           0            1
4   DD          DogX    1           0            1
5   EE          Elva    8           1            0

问题1

我想查一下有多少家公司有CHI或美国制造的产品(有些公司有2个或更多品牌,但我只想数1次,比如DogO和DogX这两个品牌都有CHI或美国制造的产品,但他们属于同一家公司,所以我只算1次)

结果应该是5(分别是公司AA、BB、CC、DD、EE)


问题2

我还想检查有多少家公司在美国制造产品(DogO和DogX也有在美国制造的产品,但它们来自同一家公司,所以我只想数1)

结果应为 2(即公司 AA 和 DD)

excel excel-formula count sum countif
1个回答
0
投票

您可以尝试以下公式:

• 对于问题一:


=SUM(N(MAP(A2:A8,LAMBDA(x, COUNTIF(A2:x,x)))=1))

  • 使用
    MAP()
    函数迭代
    Company
    列中的每个单元格以获取运行计数。
  • 上述返回运行计数,因此等于
    1
    ,它给出了独特的品牌,但它没有考虑到
    Made in
    类别,但如果数据与 OP 中所示一致,那么这应该有效。
  • 上面的返回
    TRUE
    FALSE
    -->
    TRUE
    是唯一值,为了获得计数,我们只需将它们相加即可。
  • 或者,如果要考虑列标题以使其动态化,则需要使用以下公式:

=SUM(N(FILTER(A2:A8,MMULT( (1-ISNA(XMATCH(C1:E1,{"Made in CHI","Made in USA"})))* (MAP(A2:A8,LAMBDA(x,
   COUNTIF(A2:x,x)))=1),{1;1;1}))<>""))

• 对于问题二:

=SUM(N(UNIQUE(FILTER(A2:A8,MMULT((1-ISNA(XMATCH(C1:E1,"Made in USA")))*(C2:E8>0),{1;1;1})))<>""))

  • 使用
    XMATCH()
    获取匹配的标题列,并验证相应列的值是否大于
    0
  • 包裹在
    MMULT()
    中以在两个数组的矩阵乘积之后返回输出。
  • 使用
    FILTER()
    函数仅抓取那些大于
    0
  • 的内容
  • 使用
    UNIQUE()
    函数排除重复项
  • 最后,使用
    SUM()
    我们还可以使用
    ROWS()
    函数或
    COUNTA()
    但避免使用,因为该函数可能会返回
    FALSE POSITIVES
    ,而使用
    SUM()
    它不会,并且会返回所需的确切输出。

© www.soinside.com 2019 - 2024. All rights reserved.