Excel – 带条件的查找值

我一直在努力做到以下几点:

  • Sheet1Data查找值A3
  • Data ,检查M列中find的值是否为1
    • 是:将DataK的值粘贴到Sheet1B3
    • 否:继续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. 返回10的数组,其中1表示列B中的值等于A3--将数组转换为10 – 否则包含TRUE / FALSE
  2. 将该数组乘以10的另一个数组,这次用1表示一行,其中列M包含数字1
  3. 最后,将该数组乘以列K的全部。 这将导致一串0的数组,然后是一个(或更多,取决于您的设置)值,这些值表示满足条件的K列中的值。

编辑:由于这涉及到文本,由@barryhoudini提供的INDEX公式(这不同于你的原始只是一点点)将做的伎俩。