2016-02-28 154 views
0

我在编写和索引匹配公式时遇到了3条错误。我有一些类似于绿色桌子的东西,想写一个公式来获得灰色表格。索引匹配3条件

在绿表中,每个“事件”都有一个开始和结束时间。所以在灰色时间系列中,时间必须在这些开始和结束时间之间。

enter image description here

+0

为什么不是1×1蓝色? – Jeeped

+0

对于这个例子,时间(灰色)必须是“> StartTime”。 (not> =) – Sammy

+0

请参阅[为什么不显示代码和示例数据图像](http://tinyurl.com/kdxb7le)。 – Jeeped

回答

1

尝试在G4这个标准公式,

=IFERROR(INDEX($C:$C, AGGREGATE(15, 6, ROW($1:$7)/ 
    (($A$1:$A$7<$F4)*($B$1:$B$7>$F4)*($D$1:$D$7=G$3)), 1)), "") 

填写向右和向下。

这与Two column lookup in table array using INDEX and MATCH实质上没有什么不同。

enter image description here

+0

这表明'AGGERATE'是**不是**避免数组公式的解决方案。因为'= IFERROR(INDEX($ C:$ C,AGGREGATE(15,6,ROW($ 1:$ 1048576)/(($ A:$ A <$F4)*($B:$B> $ F4)*($ D:$ D = G $ 3)), 1)),“”)'与数组公式一样耗时。 –

+1

Axel,AGGREGATE的处理方式与SUMPRODUCT相同;它不会像使用SUMIFS那样截断使用的范围,等等。我从来没有说过它,并且在这个解决方案中将处理范围降低到7行。如果事实上,嵌套的基于IF的数组公式会稍微快一些,因为如果第一个或第二个IF条件根本不处理,则第一个或第二个失败。 – Jeeped

+0

是的,我正在处理大量数据,所以速度是一个问题。可能尝试嵌套如果建议。 – Sammy

0

我想我会用VBA作为@Jeeped建议。 但现在我尝试了嵌套,如果像这样在G4:

=IFERROR(INDEX($C$2:$C$7,MATCH(G$3,IF($F4>$A$2:$A$7,IF($F4<$B$2:$B$7,$D$2:$D$7,0),0),0)),"") 

不知道什么是速度更好。