我在excel中遇到公式问题,如下所示:
@Data
public class ResponseJson implements Serializable {
private List<String> names;
}
entity ResponseJson{
names String
}
范围采用以下格式
=INDEX(Sheet2!$A$4:$AZ$11,$F6,SUMPRODUCT((Sheet2!$F$18:$F$30=$I$4)*(Sheet2!$G$18:$G$30=$D6)*(Sheet2!$H$18:$H$30)))
此公式在我将其应用到的第一列中效果很好,但是当我将其应用到需要填充的下一列时,它将无法正常工作。
我在图片中同时显示了工作单元(顶部)和错误单元(底部)中的公式。顶部的单元格正确地返回了0的结果,因为没有匹配项,从而允许我的F:H
函数(此函数嵌套在其中)使用零来根据需要填充单元格。但是,即使行和列引用相同(行为1,列为0),第二个公式也会从Criteria 1 | Criteria 2 | Column Value
string | string | number
范围的第1列第1行返回一个值。
为什么会这样?
EDIT _____________
该公式查看单元格IF
和A4:AZ
的值,并将它们与I4
范围进行比较
D6
符合标准1,F:H
符合标准2
这应该在I4
列中查找Number。该数字是D6
范围内的列参考号。该数字与H
中的值相结合,为索引函数提供了行和列的引用。
当A4:AZ11
或F6
比较中没有匹配项时,I4
函数应返回值0,就像在附件中的第一个示例中一样。但是它将返回A4中的值。
我还刚刚注意到,当我在工作表中插入一列时(在C列的上方),该论坛提供的值从D6
值变为SUMPRODUCT
值>
答案 0 :(得分:0)
我所做的是尝试在一张纸(而不是两张纸)上重新创建您的情况:
您在这里看到的基本上是公式:
{=INDEX(A:M,F6;INDEX(H18:H30,IFERROR(MATCH(I4&D6,F18:F30&G18:G30,0),0),1))}
公式明细:
1)。这部分将在您的范围F2:G37
中查找,返回具有匹配项的行,而IFERROR
将返回0:
=IFERROR(MATCH(I4&D6,F18:F30&G18:G30,0),0)
2)。然后,下一部分将通过INDEX
在范围H18:H30
第1列中查找对应的值:
=INDEX(H18:H30,IFERROR(MATCH(I4&D6,F18:F30&G18:G30,0),0),1)
3)。接下来,我们可以使用单元格F6
中的值在下一个索引中使用此值。就我而言,我使用范围A:M
将所有内容都显示在一个屏幕上。显然要调整此范围:
=INDEX(A:M,F6;INDEX(H18:H30,IFERROR(MATCH(I4&D6,F18:F30&G18:G30,0),0),1))
4)。通过 Ctrl + Shift + Enter 确认公式。
在我的情况下,它将从cells(12,7)返回值。如果找不到步骤1中的匹配项,它将返回0!