我正在寻找一个公式(或代码),该公式在列中查找值,然后在日期之间的该行中查找值,当多个日期返回最大值时,然后将值返回到左侧。我不能使用帮助器列。我尝试了几个嵌套的索引/匹配公式,但是没有成功...
对于以下示例:
参数1:在A列中找到叉子
参数2:在该行(4)中,找到介于18年1月1日至18年1月5日之间的日期
参数3:当在该日期范围内找到多个日期时,返回最大值
参数4:从该日期左侧的列返回值
结果:D列为黑色。
A B C D E F G
1 ID Colour 1Date 1 Colour 2Date 2 Colour 3 Date 3
2 Plate Green 1-Jan-18 Red 23-Jan-18 L blue 14-Feb-18
3 Bowl Blue 6-Jan-18 Brown 28-Jan-18 Yellow/Green 19-Feb-18
4 Fork Yellow 2-Jan-18 Black 4-Jan-18 Turquoise 24-Feb-18
5 Knive Purple 16-Jan-18 White 7-Feb-18 Maroon 1-Mar-18
6 Spoon Pink 21-Jan-18 Orange 12-Feb-18 L pink 6-Mar-18
我希望有可能!非常感谢。
答案 0 :(得分:1)
尝试一下
其中
I10
=要搜索的ID
I11
=最小日期(2018年1月1日)
I12
=最长日期(2018年1月5日)
J10
= =MATCH($I$10,$A$1:$A$6,0)
获取ID的行号
=INDEX(INDEX($A$1:$G$6,$J$10,),
MATCH(
MAXIFS(INDEX($A$1:$G$6,$J$10,),
INDEX($A$1:$G$6,$J$10,),">="&$I$11,
INDEX($A$1:$G$6,$J$10,),"<="&$I$12
),
INDEX($A$1:$G$6,$J$10,),0
) - 1
)
是
INDEX($A$1:$G$6,$J$10,)
获取ID的数据行(在公式中重复多次)
MAXIFS(...)
获得满足>=
和<=
标准的最长日期
MATCH(MAXIF(...), [ID data row],0)
获取MAXIF
返回的日期的列号
INDEX( [ID data row], MATCH(MAXIF(...), [ID data row],0) - 1)
返回颜色
不包含MAXIFS
的替代公式
=INDEX(INDEX($A$1:$G$6,$J$10,),
MATCH(
MAX(IFERROR(({0,0,1,0,1,0,1})*(INDEX($A$1:$G$6,$J$10,)>=$I$11)*(INDEX($A$1:$G$6,$J$10,)<=$I$12)*(INDEX($A$1:$G$6,$J$10,)),0)),
INDEX($A$1:$G$6,$J$10,),0
) - 1
)
输入为数组公式(用 Ctrl Shift Enter 完整,而不仅仅是 Enter )