具有多个条件和表

时间:2015-12-24 11:47:44

标签: excel excel-formula vlookup countif

我有四个开发人员的列表(A1 =“Dev1”,A2 =“Dev2”,A3 =“Dev3”和A4 =“Dev3”)。

在工作周日历中,我有5列,每周一天(C1 =“星期一”,D1 =“星期二”,E1 =“星期三”,F1 =“星期四,G1 =”星期五“ )。

如果开发者Dev3在星期二休息一天,我会去D2并输入:“Dev3”。

在H2,我有以下公式:

  

= COUNTIF(C2:G2, “* DEV1 *”)+ COUNTIF(C2:G2, “* DEV2 *”)+ COUNTIF(C2:G2, “* DEV3 *”)+ COUNTIF(C2:G2,” * DEV4 *“)

在上面的场景中,我的H2值为'1'。如果我将D2单元编辑为这样的东西:“Dev3,Dev4”,H2的结果将是'2'。

这个公式适用于我需要的东西,但我知道有一种更优雅的方式,我可以使用A:A列上的开发人员列表,而不是为每个开发人员创建一个COUNTIF元素。

有人可以帮助我实现列表A:A的使用,而不是为每个开发人员创建一个COUNTIF元素吗?

sheet's screenshot:

OP sample data image

1 个答案:

答案 0 :(得分:2)

SUM / COUNTIF function数组¹公式或SUMPRODUCT function应该能够正确计数,前提是没有“误报”,例如 Dev1 Dev12

'array formula
=SUM(COUNTIF(C2:G2, "*"&A$1:INDEX(A:A, MATCH("zzz",A:A ))&"*"))
'SUMPRODUCT
=SUMPRODUCT(--ISNUMBER(SEARCH(A$1:INDEX(A:A, MATCH("zzz",A:A )), C2:G2)))

请注意,在这两种情况下,A列的开发人员列表都已减少到最小的单元格数,

A$1:INDEX(A:A, MATCH("zzz",A:A ))

Dev1_Dev2

¹数组公式需要用 Ctrl + Shift + Enter↵完成。一旦正确进入第一个单元格,就可以像任何其他公式一样向下或向右填充或复制它们。尝试并减少对更接近表示实际数据范围的范围的全列引用。数组公式以对数方式计算计算周期,因此将参考范围缩小到最小值是一种好习惯。有关详细信息,请参阅Guidelines and examples of array formulas