我在excel中有一个矩阵工作正常:
=INDEX('KIT e SVLAN'!N:N;MATCH(1;('KIT e SVLAN'!A:A=E3)*('KIT e SVLAN'!AK:AK="S")*('KIT e SVLAN'!AL:AL="AT");0))
我想补充另一个条件:('KIT e SVLAN'!L:L =“0”)
得到类似的东西:
=INDEX('KIT e SVLAN'!N:N;MATCH(1;(('KIT e SVLAN'!A:A=E4)*('KIT e SVLAN'!L:L="0")*('KIT e SVLAN'!AK:AK="S")*('KIT e SVLAN'!AL:AL="AT"));0))
当我按下Ctrl + Shift + Enter时,第二个矩阵给出N / A实际上它必须返回一个值。什么可以解决方案? 感谢
答案 0 :(得分:0)
从...*('KIT e SVLAN'!L:L=0)*...
部分删除引号后,您的工作公式为
=INDEX('KIT e SVLAN'!N:N;MATCH(1;(('KIT e SVLAN'!A:A=E4)*('KIT e SVLAN'!L:L=0)*SIGN(LEN('KIT e SVLAN'!L:L))*('KIT e SVLAN'!AK:AK="S")*('KIT e SVLAN'!AL:AL="AT"));0))
为了提高效率,请将 KIT e SVLAN 工作表上的引用数据块更改为动态命名范围。通过引用命名范围,只有完全将根据需要处理多个行。当添加或删除新行时,范围将重塑自身。
公式的一个静态条件是列AL等于"AT"
。如果我们将范围缩小到包含AL列中任何文本的最后一行,那么下面的任何内容都不重要,因为它们在任何情况下都不会被返回。包含AL列中文本值的最后一行可以使用以下公式
=match(char(255); AL:AL)
是的,有一个匹配的引用空间。对于MATCH function来说,空格对于从文本列返回最后一行非常重要。
您的列似乎有特定用途,因此我假设您在顶行有基于文本的列标题标签。
转到公式►定义的名称►名称管理器。 “名称管理器”对话框打开后,单击新建。
='KIT e SVLAN'!$A$1:index('KIT e SVLAN'!$A:$XFD; match(char(255); $AL:$AL); match(char(255); $1:$1))
[可选]通过点击 F5 ,键入 kesDATA 并单击确定来测试新的命名范围。您应该选择整个命名范围。
现在将公式更改为其中一个数组公式¹,
'for zeroes and blanks in column L
=INDEX(INDEX(kesDATA; ; 14); MATCH(1; (INDEX(kesDATA; ; 1)=E3)*NOT(INDEX(kesDATA; ; 12))*(INDEX(kesDATA; ; 37)="S")*(INDEX(kesDATA; ; 38)="AT"); 0))
'for zeroes in column L but not blanks,
=INDEX(INDEX(kesDATA; ; 14); MATCH(1; (INDEX(kesDATA; ; 1)=E3)*NOT(INDEX(kesDATA; ; 12))*SIGN(LEN(INDEX(kesDATA; ; 12)))*(INDEX(kesDATA; ; 37)="S")*(INDEX(kesDATA; ; 38)="AT"); 0))
...或其中一个标准公式使用较新的AGGREGATE² function来完成多列标准处理。
'for zeroes and blanks in column L,
=INDEX(INDEX(kesDATA; ; 14); AGGREGATE(15; 6; ROW(INDEX(kesDATA; ; 14))/((INDEX(kesDATA; ; 1)=E3)*NOT(INDEX(kesDATA; ; 12))*(INDEX(kesDATA; ; 37)="S")*(INDEX(kesDATA; ; 38)="AT")); 1))
'for zeroes in column L but not blanks,
=INDEX(INDEX(kesDATA; ; 14); AGGREGATE(15; 6; ROW(INDEX(kesDATA; ; 14))/((INDEX(kesDATA; ; 1)=E3)*NOT(INDEX(kesDATA; ; 12))*SIGN(LEN(INDEX(kesDATA; ; 12)))*(INDEX(kesDATA; ; 37)="S")*(INDEX(kesDATA; ; 38)="AT")); 1))
这些公式可能看起来很复杂,但它们只需要你之前的数组公式¹所做计算周期的一小部分。
¹数组公式需要用 Ctrl + Shift + Enter↵完成。一旦正确进入第一个单元格,就可以像任何其他公式一样向下或向右填充或复制它们。尝试并减少对更接近表示实际数据范围的范围的全列引用。数组公式以对数方式计算计算周期,因此将参考范围缩小到最小值是一种好习惯。有关详细信息,请参阅Guidelines and examples of array formulas。
² {2010}引入了AGGREGATE function。它在早期版本中不可用。