用于在特定约束内从数组中选择最高日期的公式

时间:2014-05-01 15:02:26

标签: excel excel-formula

我正在寻找一个公式,根据哪个日期(如果有的话)是特定日期范围内所有可用日期中的最高日期,返回六个可能结果中的一个。

考虑以下布局: 单元格A1具有固定日期(这是我的下限) 单元格A2有固定的日期(这是我的上限) 单元格G5:K5可能包含日期,也可能为空白。

如果G5和H5都包含日期,并且这两个日期都在我的A1和A2日期之间,那么我希望我的公式结果能够确定哪两个是最新的(它可以显示日期本身,列标题,文本字符串,只要每个列的内容不同,就没有关系了)

如果G5:K5中的任何一个还包含超出A1和A1定义的窗口之外的其他日期。 A2那么那些日期应该被忽略。

如果所有日期都不在允许的范围内,或者所有单元格都是空白,则它可以返回类似于"不适用的字符串"或者我可以使用IFERROR重写的错误。

我的数据集非常大(我将这个公式复制到几百行)所以我宁愿避免使用{array}公式,如果可能的话 - 太慢了。我已经盯着这张工作表足够长的时间让我的大脑变得糊里糊涂,所以如果有一种直截了当的方法来实现我的目标,那么它目前正在躲避我。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

我想我现在明白了。以下公式将为您提供G5:K5范围内的最大日期,但条件是它在A1和A2之间的日期之间。它将返回"如果没有任何日期符合条件,则不适用。

=IF(COUNTIFS(G5:K5,">="&$A$1,G5:K5,"<="&$A$2)<5,LARGE(G5:K5,1+COUNTIFS(G5:K5,">"&$A$2)),"not applicable")

答案 1 :(得分:0)

最终计算出来。它并不漂亮,但它确实有效。

此部分返回最高有效日期:

MAX(IF(AND(G5&GT; = $ A $ 1,G5&LT; = $ A $ 2),G5,0),IF(AND(H5&GT; = $ A $ 1,H5&LT; = $ A $ 2),H5, 0),IF(AND(I5&GT; = $ A $ 1,I5&LT; = $ A $ 2),I5,0),IF(AND(J5&GT; = $ A $ 1,J5&LT; = $ A $ 2),J5,0) ,IF(AND(K5&GT; = $ A $ 1,K5&LT; = $ A $ 2),K5,0))

然后通过嵌套我可以将结果转换为不同的文本字符串,具体取决于哪个列包含&#34;赢家&#34;。

= IF(AND(MAX(IF(AND(G5&GT; = $ A $ 1,G5&LT; = $ A $ 2),G5,0),IF(AND(H5&GT; = $ A $ 1,H5&LT; = $ A $ 2),H5,0),IF(AND(I5&GT; = $ A $ 1,I5&LT; = $ A $ 2),I5,0),IF(AND(J5&GT; = $ A $ 1,J5&LT; = $ A $ 2) ,J5,0),IF(AND(K5&GT; = $ A $ 1,K5&LT; = $ A $ 2),K5,0))= G5,G5&LT;&GT;&#34;&#34;),&#34 ; CA&#34;,IF(AND(MAX(IF(AND(G5&GT; = $ A $ 1,G5&LT; = $ A $ 2),G5,0),IF(AND(H5&GT; = $ A $ 1,H5&LT = $ A $ 2),H5,0),IF(AND(I5&GT; = $ A $ 1,I5&LT; = $ A $ 2),I5,0),IF(AND(J5&GT; = $ A $ 1,J5&LT; = $ A $ 2),J5,0),IF(AND(K5&GT; = $ A $ 1,K5&LT; = $ A $ 2),K5,0))= H5,H5&LT;&GT;&#34;&#34;),& #34; MX&#34;,IF(AND(MAX(IF(AND(G5&GT; = $ A $ 1,G5&LT; = $ A $ 2),G5,0),IF(AND(H5&GT; = $ A $ 1,H5&LT ; = $ A $ 2),H5,0),IF(AND(I5&GT; = $ A $ 1,I5&LT; = $ A $ 2),I5,0),IF(AND(J5&GT; = $ A $ 1,J5&LT = $ A $ 2),J5,0),IF(AND(K5&GT; = $ A $ 1,K5&LT; = $ A $ 2),K5,0))= I5,I5&LT;&GT;&#34;&#34) &#34; BR&#34;,IF(AND(MAX(IF(AND(G5&GT; = $ A $ 1,G5&LT; = $ A $ 2),G5,0),IF(AND(H5&GT; = $ A $ 1 ,H5&LT; = $ A $ 2),H5,0),IF(AND(I5&GT; = $ A $ 1,I5&LT; = $ A $ 2),I5,0),IF(AND(J5&GT; = $ A $ 1,J5&LT ; = $ A $ 2),J5,0),IF(AND(K5&GT; = $ A $ 1,K5&LT; = $ A $ 2),K5,0))= J5,J5&LT;&GT;&#34;&#34 ;),&#34; IQS&#34;,IF(AND(MAX(IF(AND(G5&GT; = $ A $ 1,G5&LT ; = $ A $ 2),G5,0),IF(AND(H5&GT; = $ A $ 1,H5&LT; = $ A $ 2),H5,0),IF(AND(I5&GT; = $ A $ 1,I5&LT = $ A $ 2),I5,0),IF(AND(J5&GT; = $ A $ 1,J5&LT; = $ A $ 2),J5,0),IF(AND(K5&GT; = $ A $ 1,K5&LT; = $ A $ 2),K5,0))= K5,K5&lt;&gt;&#34;&#34;),&#34;其他&#34;,&#34;不适用&#34;))))))/ p>