选择具有多列的范围时,Countifs 不起作用
Posted
技术标签:
【中文标题】选择具有多列的范围时,Countifs 不起作用【英文标题】:Countifs does not work when a range with multiple column is selected 【发布时间】:2019-04-08 12:22:15 【问题描述】:我需要一个 count if 函数来计算满足特定条件的单元格。这应该通过计数来完成。公式如下:
=COUNTIFS(Orders!D:D;"*Ecolab*";Orders!B:B;">=01/01/2019";Orders!U:U;">=36";Orders!K:Q;">=1")
这个公式返回值类型错误。
在我引入最后一个条件orders!K:Q;">=1"
之前,这个公式很有效
我想要一个计算单元格中是否存在 Ecolab 一词的公式;如果日期晚于或等于 2019 年 1 月 1 日;如果 U 列大于或等于数字 36,并且从 K 列到 Q 列的行中的单元格中至少有一个“1”。我可以通过轻松复制 countifs 几次来做到这一点,(即@ 987654323@
但我宁愿不包含这么长的公式,因为它会给 Excel 表格的最终用户造成混乱
【问题讨论】:
COUNTIFS 仅适用于大小和形状相同的范围。您必须使用 SUMPRODUCT 之类的其他函数,或者使用带有 OFFSET 的列偏移数组作为最后一个范围。 你是说如果 K1 和 M1 都大于 1 那么第 1 行的计数应该是 2? 【参考方案1】:根据我上面的评论,您可以使用 SUMPRODUCT(避免为此使用整列)或带有 OFFSET 的数组,如下所示:
=SUM(COUNTIFS(Orders!D:D;"*Ecolab*";Orders!B:B;">=01/01/2019";Orders!U:U;">=36";OFFSET(Orders!J:J;0;1;2;3;4;5;6;7);">=1"))
【讨论】:
是的,这与 OP 建议他/她可以使用的多个 COUNTIF 结果相同。如果这不是预期的结果,那么 OP 需要澄清...... 如果K1、L1、M1、N1、O1、P1和Q1都>=1,那那一行不是算了7次吗? @user11314630 再次,是的 - 请参阅我上面的评论。【参考方案2】:如果单行中可能有多个大于或等于 1 的单元格时 K:Q 的计数应为 1,那么您需要在 SUMPRODUCT 中应用 OR 条件。
SUMPRODUCT 公式不应使用完整的列引用;有太多浪费的计算。以下是第 2:99 行;调整以供自己使用。
=SUMPRODUCT(--ISNUMBER(SEARCH("ecolab", Orders!D2:D99)),
--(Orders!B2:B99>=DATE(2019, 1, 1)),
--(Orders!U2:U99>=36),
SIGN((Orders!K2:K99>=1)+(Orders!L2:L99>=1)+(Orders!M2:M99>=1)+(Orders!N2:N99>=1)+(Orders!O2:O99>=1)+(Orders!P2:P99>=1)+(Orders!Q2:Q99>=1)))
【讨论】:
短一点是:=SUMPRODUCT(ISNUMBER(SEARCH("ecolab", Orders!D2:D99))*(Orders!B2:B99>=DATE(2019, 1, 1))*(Orders!U2:U99>=36)*(K2:Q99>=1))
这也会产生填充结果。使用 SIGN 将任何数字从 1 到 7 转换回 1 是我所知道的 SUMPRODUCT OR 语句的最佳方法。好吧,要么 SIGN 要么集体大于 0。以上是关于选择具有多列的范围时,Countifs 不起作用的主要内容,如果未能解决你的问题,请参考以下文章