将SUMPRODUCT公式转换为INDEX + MATCH

时间:2019-05-21 02:36:58

标签: excel excel-formula

我有一个电子表格,其中显示了每位员工产生的实际美元和期望产生的美元,其中每一行是一天,每位雇员有两列。我想计算一个员工达到其生产目标10%的次数而没有引用特定的列的次数。请查看example spreadsheet

我希望单元格Sheet2!E4:E7中的公式能够执行Sheet2!E10:E13中的公式。

我试图避免使用直接列引用,因为这会使我不得不在每次将新员工添加到工作表时都必须更新公式中的列。

我对使用INDEX+MATCH或将SUMPRODUCT公式转换为INDEX+MATCH并不陌生。我无法逾越的是单元格Sheet2!E4:E7中的公式。如果您对公式进行求值,则可以看到公式左侧的INDEX+MATCH部分可以正常工作,然后右侧的几乎相同的INDEX+MATCH部分的值显然为0。

我遇到问题的公式位于单元格Sheet2!E4中:

COUNTIF(INDEX(Sheet1!$A$2:$AZ$314,,MATCH($B4,Sheet1!$A$1:$AZ$1,0)),">"&(INDEX(Sheet1!$A$2:$AZ$314,,MATCH($B4,Sheet1!$A$1:$AZ$1,0)+1)))

">"左侧的部分将与正确的范围(Sheet1!B2:B314)相匹配,但是">"右侧的部分将得出0而不是Sheet1!C2:C314

这对我来说很奇怪,因为两个部分之间的唯一真正区别是'+1'函数末尾的MATCH,并将'+1'添加到左侧的部分通过评估单元格">"中的公式可以看出,MATCH中的Sheet1!C2:C314函数产生了Sheet2!E5函数(Sheet2!E10)的预期结果。

产生正确结果的公式在单元格SUMPRODUCT(--(ISNUMBER(Sheet1!$B$2:$B$313)),--(Sheet1!$B$2:$B$313<Sheet1!$C$2:$C$313),--(Sheet1!$B$2:$B$313>=Sheet1!$C$2:$C$313*0.9)) 中:

'$'

我了解,如果我在列引用之前排除了Sheet1,则以后在F上对列进行的任何增减将相应地调整引用。此解决方案不是理想的,因为有多个数据表(每年一个),各列都不同(Dan是2019年的G列,2018年的M列, 2017等),并且使用这些工作表的表格的布局将使我无法轻松地自动更新公式,因此,首选使用员工姓名定位正确列的解决方案。

正确的结果应该是Allen为2,Torres为3,但是我似乎只能得到INDEX+MATCH公式以返回0、12、15、16或17(取决于我对代码所做的调整)公式)。

任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:阵列格式CTRL + SHIFT + ENTER

=SUM(IF(ISNUMBER(INDEX($A$1:$E$30,2,MATCH(G9,$A$1:$E$1,0)):INDEX($A$1:$E$30,30,MATCH(G9,$A$1:$E$1,0))),INDEX($A$1:$E$30,2,MATCH(G9,$A$1:$E$1,0)):INDEX($A$1:$E$30,30,MATCH(G9,$A$1:$E$1,0))<INDEX($A$1:$E$30,2,MATCH(G9,$A$1:$E$1,0)+1):INDEX($A$1:$E$30,30,MATCH(G9,$A$1:$E$1,0)+1)*(INDEX($A$1:$E$30,2,MATCH(G9,$A$1:$E$1,0)):INDEX($A$1:$E$30,30,MATCH(G9,$A$1:$E$1,0))>=INDEX($A$1:$E$30,2,MATCH(G9,$A$1:$E$1,0)+1):INDEX($A$1:$E$30,30,MATCH(G9,$A$1:$E$1,0)+1)*0.9))*1)

,并根据您的需要调整范围。它与数据输入在同一张纸上。

基本上,这种方法使用 ARRAY FORMULA CTRL + SHIFT + ENTER

INDEX($A$1:$E$30,2,MATCH(G9,$A$1:$E$1,0)):INDEX($A$1:$E$30,30,MATCH(G9,$A$1:$E$1,0)))

以获取所需的范围。 MATCH查找右列。可以根据需要设置行号,这里的行号从230,以适合您提供的数据。在这种情况下,我的搜索字词是在G9中,以艾伦为内容。公式的结果为$B$2:$B$30+1之后的Match给出了另一个范围$C$2:$C$30。然后可以在所需条件下评估两个范围

将其拉下并在G10中提供Torres。然后将范围调整为$D$2:$D$30$E$2:$E$30

enter image description here