如何根据一组数据中的列和行标准对特定单元格进行计数

问题描述 投票:0回答:2

我正在尝试根据列和行条件计算某个值在数据集中出现的次数。

对于以下数据集,假设数据涵盖 A1 到 E6:

团队 克里斯 艾米丽 鲍勃
工作 1 1 2 3 5
工作 2 3 2 4 4
工作 2 3 2 4 3
工作 2 2 2 1 2
工作 1 4 2 1 1

姓名 | Job 2 的数量大于或等于 3 克里斯|

我想创建一个公式,该公式能够查看此数据集以找到对应于 Chris、Job 2 和大于 2 的值的单元格。

有人可以就此提出建议吗?非常感谢您的帮助。

我曾尝试使用 countifs 和 sumproduct 来执行此操作,但通常会出错。我应该得到 2 的值。希望这是有道理的

我的总和示例:=SUMPRODUCT(((A1:A6="Job 2")+(A1:E1="Chris")>0)*(A1:E6=">2"))

formula countif sumproduct
2个回答
1
投票
=SUMPRODUCT((A1:A6="Job 2")*(INDEX(A1:E6,,MATCH(TRUE,A1:E1="Chris",0))>2))

或更普遍的

B15

=SUMPRODUCT((A1:A6=B12)*(INDEX(A1:E6,,MATCH(TRUE,A1:E1=B13,0))>B14))

结果:


0
投票

使用多个标准计数

  • 作为替代方案,这正是
    COUNTIFS
    所做的。
=COUNTIFS(A2:A6,"Job 2",INDEX(B2:E6,,MATCH("Chris",B1:E1,0)),">2")
  • 当然,这里最难的部分是想出

    INDEX/MATCH
    公式。

  • 话虽如此,我更喜欢第一个答案中的解决方案,因为

    COUNTIFS
    仅适用于范围,因此您不会在帖子的后续部分看到它。

  • 如果您想使用 Microsoft 365 尽情享受它,您可以做类似的事情...

=LET(d,A1:E6,n,"Chris",j,"Job 2",gt,2,
    dn,DROP(TAKE(d,1),,1),v,DROP(d,1),
    dj,TAKE(v,,1),dv,DROP(v,,1),
    i,INDEX(dv,,XMATCH(n,dn)),
IFNA(SUM((dj=j)*(i>gt)),""))

...在这种特殊情况下,这当然是矫枉过正(疯狂)。然而,它是为所有成员创建溢出公式的基础,如下面的屏幕截图所示。

G2

=LET(d,A1:E21,j,J2,gt,K2,
    dn,TOCOL(DROP(TAKE(d,1),,1)),v,DROP(d,1),
    dj,TAKE(v,,1),dv,DROP(v,,1),
HSTACK(dn,MAP(dn,LAMBDA(r,
    LET(i,INDEX(dv,,XMATCH(r,dn)),
IFNA(SUM((dj=j)*(i>gt)),""))))))
  • 希望
    J2
    K2
    包含下拉菜单,更不用说,如果你把数据放在 Excel 表格中,当你真正杀死它时,所有动态和灵活......

虫子还是我瞎了?

  • 如果有人能弄清楚为什么
    BYROW
    (而不是
    MAP
    )在这种情况下不起作用,我将不胜感激:它在计数列中显示所有零。在我尝试之前我浪费了很多时间
    MAP
    .
© www.soinside.com 2019 - 2024. All rights reserved.