search完全相同的date或过去最近的date+一个额外的条件的function

这是“ 可以编写一个VBA代码来search完全相同的数据还是过去最接近的数据? ”的延续。

基本上我想扩展@Jeeped发布的function,但是由于某种原因,它不会按计划进行,尽pipe我正在做同样的东西。

在这种情况下的额外条件是用于生产果汁的机器必须等同于参数的机器。


(我在做什么的形象)

基本上,如果一个果汁是在29/09与机器M0例如,然后我想拥有参数,用于果汁。 显然,30/09的参数没有被使用,而是使用机器M0的参数25/09。

我编辑了我以前的问题中发布的代码@Jeeped以下内容

=IFERROR(INDEX(C$2:C$10, MIN(INDEX(ROW($1:$10)+($A$2:$A$10>$F2)*1E+99+($B$2=$G$2),,))),"")

但我得到一个错误,我不知道为什么,但我有一个感觉,它与我写的($ B $ 2 = $ G $ 2)有关,但我该如何解决?

免责声明:使用的百分比是虚构的,这只是我需要为几个工作簿工作的function,它会自动执行我每个月需要做的一些工作。

看起来你想添加列B应该匹配G2的条件。 这应该做的伎俩。

=IFERROR(INDEX(C$2:C$10, MIN(INDEX(ROW($1:$9)+(($A$2:$A$10>$F2)+($B$2:$B$10<>$G2))*1E+99,,))),"")

这种公式不会直接匹配。 它排除了所有不匹配的东西,然后接受剩下的东西。 所以就像F2中的date与A列中的date进行比较,任何更大的(即后面的)都乘以一个非常大的数字。 我们对G2中的机器ID也做同样的事情。 任何与列B中的机器不匹配的东西都会乘以相同的很大的数字。 通过math排除任何不适合的东西,我们将留下适合的东西。

注意到ROW(1:9)是C2:C10或A2:A10中的位置,而不是工作表上的实际行,这一点也很重要。

附录:随着date现在未sorting,我可以提供一个标准和数组公式,以弥补。 I2的arrays公式是,

 =SUMIFS(C$2:C$10,$A$2:$A$10,MAX(IF($A$2:$A$10<=$F2,IF($B$2:$B$10=$G2,$A$2:$A$10))),$B$2:$B$10,$G2) 

这必须使用Ctrl + Shift + Enter而不是简单的Enter来完成。 一旦input正确,就可以正确填写。 接下来是一个不需要Ctrl + Shift + Enter但是完成相同的事情的标准公式。 你的结果应该类似于下面的图片。

 =SUMIFS(C$2:C$10, $A$2:$A$10,MAX(INDEX(($A$2:$A$10<=$F2)*($B$2:$B$10=$G2)*($A$2:$A$10),,)),$B$2:$B$10,$G2) 

在这里输入图像说明

我想下面的公式可能会回答你的问题。 请参阅图像以供参考。 使用下面的公式输出示例

 Formula Used: =INDEX($D$2:$E$7,MATCH(1,($B$2:$B$7<$H3)*($C$2:$C$7=$I3),0),1) 

请注意 – 这要求您的参数更改date从最新到最旧sorting

要应用此公式,请在编写公式之后按CTRL + SHIFT + ENTER。 这是excel需要了解的,这应该作为一个数组公式。 在这样做的时候,excel会自动在公式的开头和结尾添加curley括号,如图中所示。

只有很小的公式才能得到%Oranges将会取代最后一个2。

 INDEX($D$2:$E$7,MATCH(1,($B$2:$B$7<$H3)*($C$2:$C$7=$I3),0),2) 

希望这回答你的问题。 请让我知道,如果你需要进一步的援助。