Excel – 带条件的查找值
我一直在努力做到以下几点:
-
Sheet1
,Data
查找值A3
-
Data
,检查M
列中find的值是否为1
- 是:将
Data
列K
的值粘贴到Sheet1
列B3
中 - 否:继续search表单,如果没有find,则显示
0
- 是:将
这是我到目前为止,它find了正确的K值,但我需要进入Shift + Ctrl + Enter获取值…
=INDEX('TLN Data'!$B$1:$Z$15000; MATCH(1;(A3='TLN Data'!$B$1:$B$15000)*(1='TLN Data'!$M$1:$M$15000);0); 10)
所有的帮助非常感谢!
–
工作表Sheet1
TLN数据
你可以添加一个INDEX函数来得到一个不需要CSE的版本,即
=INDEX('TLN Data'!$B$1:$Z$15000; MATCH(1;INDEX((A3='TLN Data'!$B$1:$B$15000)*(1='TLN Data'!$M$1:$M$15000);0);0);10)
这在某些情况下比SUMPRODUCT更可取,例如,返回值是文本,或者如果您有多个匹配,而您只需要第一个。
你也可以像这样使用LOOKUP:
=LOOKUP(2;1/(A3='TLN Data'!$B$1:$B$15000)/(1='TLN Data'!$M$1:$M$15000);'TLN Data'!$K$1:$K$15000)
有了这个版本,如果有多个匹配返回最后
尝试使用SUMPRODUCT
(您不需要input数组):
=SUMPRODUCT( --('TLN Data'!$B$1:$B$15000=A3), --('TLN Data'!$M$1:$M$15000=1), 'TLN Data'!$K1:$K$15000)
这与你上面的MATCH
公式使用类似的逻辑:
- 返回
1
和0
的数组,其中1
表示列B
中的值等于A3
(--
将数组转换为1
和0
– 否则包含TRUE
/FALSE
) - 将该数组乘以
1
和0
的另一个数组,这次用1
表示一行,其中列M
包含数字1
- 最后,将该数组乘以列
K
的全部。 这将导致一串0
的数组,然后是一个(或更多,取决于您的设置)值,这些值表示满足条件的K
列中的值。
编辑:由于这涉及到文本,由@barryhoudini提供的INDEX
公式(这不同于你的原始只是一点点)将做的伎俩。